首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Apache POI :运行工作簿创建代码两次,即使在workbook.close()

被调用之后,Apache POI依然可以运行,为什么?

Apache POI是一个用于处理Microsoft Office文件(如Word、Excel和PowerPoint)的开源Java库。它提供了一组API,使开发人员能够读取、写入和操作这些文件。

在Apache POI中,工作簿(Workbook)是一个抽象的概念,代表着一个Excel文件。创建工作簿的代码可能包含了一系列的操作,如创建工作表、写入数据等。在完成这些操作之后,我们可以调用workbook.close()方法来关闭工作簿并释放相关的资源。

然而,即使在调用workbook.close()之后,Apache POI依然可以正常运行。这是因为Apache POI内部实现了自动资源管理(Automatic Resource Management)的机制。

自动资源管理是Java 7引入的一个特性,它通过try-with-resources语句来自动关闭资源。在Apache POI中,工作簿对象是一种资源,当我们使用try-with-resources语句创建工作簿时,在作用域结束时,会自动调用工作簿的close方法来关闭工作簿。

下面是一个示例代码:

代码语言:txt
复制
try (Workbook workbook = new XSSFWorkbook()) {
    // 创建工作表、写入数据等操作
    // ...
} catch (IOException e) {
    // 异常处理
    // ...
}

在这个示例中,当代码块执行完毕或发生异常时,工作簿对象会被自动关闭,无需显式调用workbook.close()方法。

综上所述,尽管在工作簿创建代码中调用了workbook.close()方法,但由于Apache POI内部实现了自动资源管理的机制,在try-with-resources语句的作用域结束时,工作簿会被自动关闭,因此Apache POI依然可以正常运行。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Excel表格的写入读取

    我们要知道一个Excel文件(工作簿)包含三部分,分别是工作表(sheet),行(row),列(cell) 工作簿 工作簿对应的类是 XSSFWorkbook(2007之后),2007之前对应的类是...) 创建一个工作簿,用于读取文件 常用的方法 XSSFFont createFont() 返回一个XSSFont类的对象,主要用于设置字体用的 XSSFSheet createSheet(...(); //创建工作簿 .....省略写入的内容 FileOutputStream out=new FileOutputStream("D:\\demo1.xlsx"); //创建输出流 book.write...一般工作表都是工作簿基础上创建的,因此构造函数也用不到,所以这里就不多说了 常用方法 int addMergedRegion(CellRangeAddress region) 合并单元格...org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook

    1.3K20

    如何高效的导出 百万级别的数据量 到 Excel?

    代码实现: 基于流的方式进行数据写入,可以使用 Apache POI 库中的 SXSSFWorkbook 类,该类采用了基于流的方式进行数据写入,避免将所有数据一次性加载到内存中。...下面是一个简单的代码示例,假设需要将数据导出到名为 “test.xlsx” 的 Excel 文件中: // 创建工作簿对象 SXSSFWorkbook workbook = new SXSSFWorkbook...workbook.close(); 其他方式: Java 中,常用的写入 Excel 文件的方式有以下几种: 1....基于 Apache POI 的方式。 Apache POI 是一个开源的 Java 库,提供了读写 Excel 文件的 API,支持多种文件格式,包括 XLS 和 XLSX 格式。...下面是一个使用 Apache POI 的示例代码: public static void writeExcel(List> data, String filePath, String

    43110

    Java数据可视化:报表技术

    现在已经停止更新和 维护,所以本课程中只时简单地演示一下jxl的代码,不会把它作为重点, 2.2.2 POI POIapache的项目,可对微软的Word,Excel,PPT进行操作,包括office2003...:创建一个新的工作薄,里面随便写一句话 操作低版本: package com.itheima.demo; import org.apache.poi.hssf.usermodel.HSSFWorkbook...://test.xlsx")); } } 比较上面两个代码会发现,开发中只是类的名称不一样,方法是一样的。...就是和jxl导出的内容一样就可以 4.3.2、基本思路 1、创建一个全新的工作薄 2、新的工作薄中创建一个新的工作表 3、工作创建第一行作为标题行,标题固定 4、从第二行循环遍历创建,有多少条用户数据就应该创建多少行...Workbook workbook = new XSSFWorkbook(); // 工作薄中创建一个工作表 Sheet sheet = workbook.createSheet

    2.6K40

    报表技术

    现在已经停止更新和 维护,所以本课程中只时简单地演示一下jxl的代码,不会把它作为重点, 2.2.2 POI POIapache的项目,可对微软的Word,Excel,PPT进行操作,包括office2003...:创建一个新的工作薄,里面随便写一句话 操作低版本: package com.itheima.demo; import org.apache.poi.hssf.usermodel.HSSFWorkbook...://test.xlsx")); } } 比较上面两个代码会发现,开发中只是类的名称不一样,方法是一样的。...就是和jxl导出的内容一样就可以 4.3.2、基本思路 1、创建一个全新的工作薄 2、新的工作薄中创建一个新的工作表 3、工作创建第一行作为标题行,标题固定 4、从第二行循环遍历创建,有多少条用户数据就应该创建多少行...Workbook workbook = new XSSFWorkbook(); // 工作薄中创建一个工作表 Sheet sheet = workbook.createSheet

    2.6K30

    纳税服务系统二(用户模块)【POI、用户唯一性校验】

    这里写图片描述 POI是这样看的: 整个excel称作为工作工作薄下可以创建很多张表,称作为工作工作表有非常多的行 行又可细分单元格【指定行的列就可以定位到工作表任意的位置了】 给我们一顿分析以后...---- 操作Excel步骤 导入POI开发包: poi-ooxml-3.10.1-20140818.jar, poi-ooxml-schemas-3.10.1-20140818.jar, 以及复制ooxml-lib...poi-ooxml-3.11-20141221.jar /** * 使用POI1无非操作Excel无非就4个步骤: * * 创建/读取工作薄 * 创建/读取工作表 * 创建/读取行 * 创建...id,因此是不能保证只有一个User对象的,即使AJAX已经做了检查。...,行从属于工作表,单元格从属于行 POI组件中,Excel文件我们又分为了两类,03版和07版的,他俩对应了不同的对象,但这两个对象的API都是一样的。

    2.6K110

    POI组件基本使用

    Apache POI 基本介绍 Apache POIApache 软件基金会提供的 100% 开源库。支持 Excel 库的所有基本功能。 ?...基本概念 POI 中,Workbook代表着一个 Excel 文件(工作簿),Sheet代表着 Workbook 中的一个表格,Row 代表 Sheet 中的一行,而 Cell 代表着一个单元格。...该操作主要涉及 Excel 的创建及使用流输出的操作, Excel 创建过程中,可能还涉及到单元格样式的操作。...方法内部我们采用反射来创建 Workbook 的实例对象。 代码 探索阶段,我们先将数据类型限定为 List,并把列数限定为某个数字,生成一个表格。...代码如下: import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet

    1.4K191

    【在线教育】POI入门

    xls 文件读操作 3.2.5 xlsx 文件读操作 3.2.6 读取不同类型的数据 3.POI入门(了解) 3.1 POI 概述 3.1.1 简介 Apache POIApache软件基金会的开放源码函式库...:一个excel文件,就是一个工作簿 工作表:一个工作簿中,可以所有多个工作表Sheet 行:每一个工作表,包含多行row 单元格:每行有多个单元格Cell组成。...Excel 工作簿        Workbook workbook = new HSSFWorkbook(); ​        // Excel工作簿中建一工作表,其名为缺省值 Sheet0...org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook...Excel 工作簿        Workbook workbook = new XSSFWorkbook(); ​        // Excel工作簿中建一工作表,其名为缺省值 Sheet0

    1.3K30

    Python让Excel飞起来—批量进行数据分析

    Python让Excel飞起来—批量进行数据分析 案例01 批量升序排序一个工作簿中的所有工作代码文件:批量升序排序一个工作簿中的所有工作表.py - 数据文件:产品销售统计表.xlsx 每个表批量对销售利润进行升序排列...() app.quit() 案例02 筛选一个工作簿中的所有工作表数据 代码文件:筛选一个工作簿中的所有工作表数据.py - 数据文件:采购表.xlsx 下图所示是按月份存放在不同工作表中的物品采购明细数据...() app.quit() 举一反三 一个工作簿中筛选单一类别数据 代码文件:一个工作簿中筛选单一类别数据.py - 数据文件:采购表.xlsx import xlwings as xw import...() app.quit() 举一反三 将多个工作簿数据分类汇总到一个工作簿 代码文件:将多个工作簿数据分类汇总到一个工作簿.py - 数据文件:销售表(文件夹) import os import...工作簿中还可以看到如下图所示的直方图,根据直方图可以看出,月销售额基本上以18为基数向两边递减,即18最普遍。

    6.4K30
    领券