我正在尝试使用Apache POI库和Java创建包含Excel表格的Excel表,但无法生成Microsoft Excel 2016(Office 365)可读取的结果文件。这是我的代码:
import org.apache.poi.ss.util.AreaReference;
import org.apache.poi.ss.util.CellReference;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
class Scratch {
public static void main(String[] args) throws IOException {
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet sheet = workbook.createSheet("Table Sheet");
XSSFRow row0 = sheet.createRow(0);
row0.createCell(0).setCellValue("#");
row0.createCell(1).setCellValue("Name");
XSSFRow row1 = sheet.createRow(1);
row1.createCell(0).setCellValue("1");
row1.createCell(1).setCellValue("Foo");
XSSFRow row2 = sheet.createRow(2);
row2.createCell(0).setCellValue("2");
row2.createCell(1).setCellValue("Bar");
AreaReference area = workbook.getCreationHelper().createAreaReference(
new CellReference(row0.getCell(0)),
new CellReference(row2.getCell(1))
);
sheet.createTable(area);
try(FileOutputStream file = new FileOutputStream(new File("workbook.xlsx"))) {
workbook.write(file);
}
}
}
代码运行正常,但是当我在Excel中打开输出文件时,会弹出一个文件包含不可读内容的提示信息。
我已经尝试运行官方样例,结果也是一样的。官方样例可以在这里找到:https://svn.apache.org/repos/asf/poi/trunk/src/examples/src/org/apache/poi/xssf/usermodel/examples/CreateTable.java 我需要知道最小化代码的要求,以获得可读的表格。
我正在使用Windows 10上的Oracle JavaSE JDK 1.8.0_172和Apache POI的4.0.0版本。
table.getCTTable().addNewAutoFilter().setRef(table.getArea().formatAsString());
进行设置。 - Axel Richter