gpt4 book ai didi

java - 通过 apache POI 创建文件时出现错误 "Your InputStream was neither an OLE2 stream, nor an OOXML stream"

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:44:09 34 4
gpt4 key购买 nike

我正在尝试检查我的 excel 文件是否已经存在。如果它不存在,我想创建一个新的,如果它存在,我将删除它并创建一个新的。我编写了以下程序,但在行中出现错误 - workbook= WorkbookFactory.create(instream);

错误是->java.lang.IllegalArgumentException:您的 InputStream 既不是 OLE2 流,也不是 OOXML 流 在 org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:89) 在 tryIng.main(tryIng.java:84)

这是一个程序->

 try {
String filePath= "C:/Users/pritik/Desktop/t1.xlsx";
File file = new File(filePath);
filePath= file.getAbsolutePath();
xlFile = new File(filePath);

if(xlFile.exists() && !xlFile.isDirectory())
xlFile.delete(); //delete if file already exists.
xlFile.createNewFile();

inStream = new FileInputStream(xlFile);
workbook = WorkbookFactory.create(inStream); // I get error at this line
String sheetName="NewSheet";
Sheet sheet = workbook.createSheet(sheetName);
FileOutputStream fOut = new FileOutputStream(xlFile);

int i,j;
xRows = xTS.length;
xCols = xTS[0].length;
for(i =0;i<xRows;i++)
{
row = sheet.createRow(i);
for(j=0;j<xCols;j++)
{
cell = row.createCell(j);
cell.setCellType(Cell.CELL_TYPE_STRING);
cell.setCellValue(xTS[i][j]);
}
}
workbook.write(fOut);
fOut.flush();
fOut.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

最佳答案

不要创建一个空文件并尝试读取它,那是行不通的。空的零字节文件无效,无法加载相反,让 POI 为您创建一个新文件,您稍后将编写该文件。

更改代码:

if(xlFile.exists() && !xlFile.isDirectory())
xlFile.delete(); //delete if file already exists.
xlFile.createNewFile();

inStream = new FileInputStream(xlFile);
workbook = WorkbookFactory.create(inStream);

改为:

if(xlFile.exists() && !xlFile.isDirectory())
xlFile.delete(); //delete if file already exists.

if (xlFile.toString().endsWith(".xls") {
workbook = new HSSFWorkbook();
} else {
workbook = new XSSFWorkbook();
}

此外,如果您确实想读取现有文件,请不要在有文件的情况下使用流!参见 this bit of the POI docs为什么不。

关于java - 通过 apache POI 创建文件时出现错误 "Your InputStream was neither an OLE2 stream, nor an OOXML stream",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29236294/

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