gpt4 book ai didi

java - Apache POI 版本 3.8 是否有助于解决 "org.apache.poi.poifs.filesystem.OfficeXmlFileException"问题?

转载 作者:行者123 更新时间:2023-12-02 06:15:20 24 4
gpt4 key购买 nike

我正在使用 Apache.POI 3.8 版本,该版本给出错误“提供的数据似乎位于 Office 2007+ XML 中。您正在调用 POI 处理 OLE2 Office 文档的部分。您需要调用不同的在我从 StackExchange 获取的以下代码中将 HSSF 更改为 XSSF 后,POI 的一部分来处理此数据(例如 XSSF 而不是 HSSF)”。

public class WritetoExcel {

private static List<List<XSSFCell>> cellGrid;

public static void convertExcelToCsv() throws IOException {
try {

cellGrid = new ArrayList<List<XSSFCell>>();
FileInputStream myInput = new FileInputStream("List_U.xlsx");
POIFSFileSystem myFileSystem = new POIFSFileSystem(myInput);
// XSSFWorkbook myWorkBook = new XSSFWorkbook(myFileSystem);
Workbook workbook = null;
try {
workbook = WorkbookFactory.create(myInput);
} catch (InvalidFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Sheet mySheet = workbook.getSheetAt(0);
Iterator<?> rowIter = mySheet.rowIterator();

while (rowIter.hasNext()) {
XSSFRow myRow = (XSSFRow) rowIter.next();
Iterator<?> cellIter = myRow.cellIterator();
List<XSSFCell> cellRowList = new ArrayList<XSSFCell>();
while (cellIter.hasNext()) {
XSSFCell myCell = (XSSFCell) cellIter.next();
cellRowList.add(myCell);
}
cellGrid.add(cellRowList);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}

File file = new File("newFile.csv");
PrintStream stream = new PrintStream(file);
for (int i = 0; i < cellGrid.size(); i++) {
List<XSSFCell> cellRowList = cellGrid.get(i);
for (int j = 0; j < cellRowList.size(); j++) {
XSSFCell myCell = (XSSFCell) cellRowList.get(j);
String stringCellValue = myCell.toString();
stream.print(stringCellValue + ";");
}
stream.println("");
}
}

public static void main(String[] args) {
try {
convertExcelToCsv();
} catch (IOException e) {
e.printStackTrace();
}
}

请帮助我解决提到的错误。

最佳答案

线路

POIFSFileSystem myFileSystem = new POIFSFileSystem(myInput);

就是问题所在,如 documentation of POIFSFileSystem 中所述,它适用于 HSSFWorkbook,并且没有提及 XSSFWorkbook

您在代码中无论如何都没有使用它,应该将其删除。

关于java - Apache POI 版本 3.8 是否有助于解决 "org.apache.poi.poifs.filesystem.OfficeXmlFileException"问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21554302/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com