![](https://products-qa.fileformat.com/zh/spreadsheet/java/apache-poi-xssf/header-image.png)
Apache POI-XSSF
用于 Microsoft® Excel XLSX 文件的开源 Java API
通过 Java 库创建、编辑 Excel XLSX 电子表格并将其转换为 CSV 和 HTML 文件格式。
Apache POI XSSF 入门
首先,您需要在系统上安装 Java 开发工具包 (JDK)。如果您已经拥有它,请继续访问 Apache POI 的 下载 页面以获取存档中的最新稳定版本。将 ZIP 文件的内容提取到可以将所需库链接到 Java 程序的任何目录中。就这些!
在基于 Maven 的 Java 项目中引用 Apache POI 更加简单。您只需在 pom.xml 中添加以下依赖项,并让您的 IDE 获取和引用 Apache POI Jar 文件。
Apache POI Maven 依赖
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.0</version>
</dependency>
使用 Java API 创建大型 Excel 电子表格
Apache POI XSSF 通过 SXSSF API 提供低内存占用,用于处理写入 MS Excel 文件的大数据。这允许写入非常大的文件而不会耗尽内存,因为任何时候只有行的可配置部分保留在内存中。 POI-SXSSF 通过限制对滑动窗口内行的访问来实现其低内存占用,而 XSSF 允许访问文档中的所有行。不再在窗口中的旧行变得不可访问,因为它们被写入磁盘。您可以使用以下步骤在 java 中创建一个大的 excel 文件
使用 Java 创建大型 Excel 文件
- 创建一个新的 SXSSFWorkbook 并在内存中保留 100 行,超过的行将被刷新到磁盘
- 使用 createSheet() 方法创建一个新工作表
- 通过使用 createRow()、createCell() 和 setCellValue("Your data") 和嵌套循环在 2000 行和 2000 个单元格中插入数据
- 使用 FileOutputStream() 保存文件并传递输出文件名
- 使用 SXSSFWorkbook.Write() 方法写入文件并将 FileOutputStream 作为参数传递
创建大型 Excel 文件
// create a new SXSSFWorkbook
SXSSFWorkbook wb = new SXSSFWorkbook(100);
Sheet sh = wb.createSheet();
// insert 2000 rows
for(int rownum = 0; rownum < 2000; rownum++){
Row row = sh.createRow(rownum);
// insert data in 20000 cells
for(int cellnum = 0; cellnum < 10; cellnum++){
Cell cell = row.createCell(cellnum);
cell.setCellValue("Row Number: "+ rownum + " Cell Number: "+ cellnum);
}
}
// save file
FileOutputStream out = new FileOutputStream("LargeDcument.xlsx");
wb.write(out);
out.close();
用于 Excel 工作簿创建和工作表添加的 Java API
Apache POI XSSF 使计算机程序员能够以 XLSX 文件格式创建新的 Excel 工作簿。一旦开发人员创建工作簿,工作表就会从工作簿的现有实例创建,并且新创建的工作表会自动按顺序添加到工作簿中。
创建 Excel 工作簿并添加工作表
// create a new XLSX file
Workbook workbook = new XSSFWorkbook();
OutputStream outputStream = new FileOutputStream("CreateXlsx.xlsx");
// create a new sheet
Sheet sheet = workbook.createSheet("Apache POI XSSF");
// create a new sheet
Row row = sheet.createRow(1);
// create a new cell
Cell cell = row.createCell(1);
// set cell value
cell.setCellValue("File Format Developer Guide");
// save file
workbook.write(outputStream);
将 Excel 电子表格转换为 CSV 和其他文件格式
Java 开发人员和程序员可以使用 Apache POI XSSF API 轻松地将 Excel 电子表格转换为 CSV 文件格式。 CSV 代表 Comma-Separated-Values,是一种非常常见的格式,用于在许多应用程序之间交换数据。首先,开发人员需要使用 Apache POI XSSF API 读取输入的 XLS 文件,然后将提取的信息写入 CSV 文件。
将 XLSX 转换为 CSV
// Open and existing XLSX file
FileInputStream fileInStream = new FileInputStream("LargeDocument.xlsx");
XSSFWorkbook workBook = new XSSFWorkbook(fileInStream);
XSSFSheet selSheet = workBook.getSheetAt(0);
// Loop through all the rows
Iterator rowIterator = selSheet.iterator();
while (rowIterator.hasNext()) {
Row row = rowIterator.next();
// Loop through all rows and add ","
Iterator cellIterator = row.cellIterator();
StringBuffer stringBuffer = new StringBuffer();
while (cellIterator.hasNext()) {
Cell cell = cellIterator.next();
if (stringBuffer.length() != 0) {
stringBuffer.append(",");
}
stringBuffer.append(cell.getStringCellValue());
}
System.out.println(stringBuffer.toString());
}
workBook.close();
页眉和页脚的 XSSF 增强
Apache POI XSSF 能够处理首页页眉和页脚,以及偶数/奇数页眉和页脚。页眉和页脚是 Excel 电子表格中非常重要的部分。它通常包含额外的信息,例如日期、页码、作者姓名和脚注,这有助于使较长的文档井井有条并更易于阅读。所有页眉/页脚属性标志都可以在 XSSF 中处理。奇数页眉和页脚是默认页眉和页脚。它显示在不显示首页页眉或偶数页页眉的所有页面上。
在 Excel XLSX 文件中合并单元格和文本提取
Apache POI XSSF 提供了允许 Java 程序员将多个单元格合并到 Excel 电子表格中的单个单元格的功能。它包含将单元格索引作为参数并将单元格合并为单个大单元格的方法。最苛刻的功能之一是能够从 XLSX 文件中提取文本并根据您的需要使用它。 Apache POI 为所有项目支持的文件格式提供了基本的文本提取。对于高级文本提取需求,包括富文本提取(例如格式化和样式)以及 XML 和 HTML 输出,Apache POI 与 Apache Tika 紧密合作,为所有项目支持的文件格式提供 POI 驱动的 Tika 解析器。