gpt4 book ai didi

java - 使用apache poi 3.9迭代写入xlsx文档时出现异常

转载 作者:行者123 更新时间:2023-12-02 03:26:00 25 4
gpt4 key购买 nike

enter image description here我正在尝试在迭代期间更新 Excel 中的值。例如,说 Cell5 的值,我试图通过迭代来更新它。对于 .xls(HSSFWorkbook)

效果很好

但是当尝试对 XSSFWorkbook(.xlsx) 执行相同操作时

但出现以下异常:

org.apache.xmlbeans.impl.values.XmlValueDisconnectedException

引用之前关于此异常的帖子,我尝试包含这段代码

        FileOutputStream out= new FileOutputStream(new File("E:\\Ash\\poi\\res.xlsx"));
workbook.write(out);
out.close();
workbook = new XSSFWorkbook(new FileInputStream("E:\\Ash\\poi\\res.xlsx"));

包括异常没有发生,但是,Excel中只有一个迭代数据被更新,其中一组是空白的。

这是我的代码: 公共(public)类 poiTestxlsx {

   public static void main(String[] args) throws IOException {
String excelFilePath = "E:\\Ash\\poi\\poiread.xlsx";
FileInputStream inputStream = new FileInputStream(new File(excelFilePath));

XSSFWorkbook workbook = new XSSFWorkbook(inputStream);
Sheet firstSheet = workbook.getSheetAt(0);
int rowCnt=firstSheet.getLastRowNum();

for (int i = 1; i <=rowCnt ; i++) {
Row r = firstSheet.getRow(i);
int res=i;
Cell cell=null;
if(cell==null){
cell=r.createCell(5);
cell.setCellType(Cell.CELL_TYPE_STRING);
cell.setCellValue(res);
}
FileOutputStream out= new FileOutputStream(new File("E:\\Ash\\poi\\res.xlsx"));
workbook.write(out);
out.close();
workbook = new XSSFWorkbook(new FileInputStream("E:\\Ash\\poi\\res.xlsx"));
}
System.out.println("done");
}
}

相同的代码适用于HSSFWorkbook,结果表已更新迭代值。请让我知道如何继续。

谢谢

最佳答案

将保存部分移到 for 循环之外,一切就完成了:)

我拿了你的代码并做了一些修改,但改动不大。只是从工作表更改为 XSSFSheet,将行更改为 XSSFrow 以保持一致性。然后将保存部分移到 for 循环之外。看起来像这样。 /** * ExcelTest 类 */

公共(public)课 ExcelTest{

public static void main(String[] args) throws IOException{
String excelFilePath = "C:\\Users\\gotpist1\\Desktop\\SRBNOI.xlsx";
FileInputStream inputStream = new FileInputStream(new File(excelFilePath));
XSSFWorkbook workbook = new XSSFWorkbook(inputStream);
XSSFSheet firstSheet = workbook.getSheetAt(0);
int rowCnt = firstSheet.getLastRowNum();
try{
for(int i = 1; i <= rowCnt; i++){
if(i == 3)
break;
XSSFRow r = firstSheet.getRow(i);
int res = i;
Cell cell = null;
if(cell == null){
cell = r.createCell(5);
cell.setCellType(Cell.CELL_TYPE_STRING);
cell.setCellValue("f" + res);
}
}
}catch(Exception e){
e.printStackTrace();
}finally{
FileOutputStream out = new FileOutputStream(new File("C:\\Users\\gotpist1\\Desktop\\SRBNOI.xlsx"));
workbook.write(out);
out.close();
inputStream.close();
System.out.println("done");
}

}

}

Output

关于java - 使用apache poi 3.9迭代写入xlsx文档时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38880443/

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