当前位置: 首页 > 面试题库 >

使用Apache POI更新Excel文件

司寇琨
2023-03-14
问题内容

我正在尝试使用Apache
POI更新现有的Excel文件。每次我运行代码时,都会收到如下所示的错误。我也试过FileInputStreamNewFile的东西。

Exception in thread "main" java.lang.NullPointerException
    at com.gma.test.WriteExcelTest.writeXLSXFile(WriteExcelTest.java:26)
    at com.gma.test.WriteExcelTest.main(WriteExcelTest.java:44)

请在下面找到代码。感谢你的帮助。

package com.gma.test;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class WriteExcelTest {

    public static void writeXLSXFile(int row, int col) throws IOException {
        try {
            FileInputStream file = new FileInputStream("C:\\Anuj\\Data\\Data.xlsx");

            XSSFWorkbook workbook = new XSSFWorkbook(file);
            XSSFSheet sheet = workbook.getSheetAt(0);
            Cell cell = null;

            //Update the value of cell
            cell = sheet.getRow(row).getCell(col);
            cell.setCellValue("Pass");

            file.close();

            FileOutputStream outFile =new FileOutputStream(new File("C:\\Anuj\\Data\\Data.xlsx"));
            workbook.write(outFile);
            outFile.close();

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        writeXLSXFile(3, 3);
    }

}

问题答案:

如果您更换

//Update the value of cell
cell = sheet.getRow(row).getCell(col);
cell.setCellValue("Pass");

//Retrieve the row and check for null
HSSFRow sheetrow = sheet.getRow(row);
if(sheetrow == null){
    sheetrow = sheet.createRow(row);
}
//Update the value of cell
cell = sheetrow.getCell(col);
if(cell == null){
    cell = sheetrow.createCell(col);
}
cell.setCellValue("Pass");

会工作的!



 类似资料:
  • 用户可以将Excel文档保存为. xls或xml-table。结果是一个具有固定结构的xml-file,Excel可以用它纠正工作。 可以用java中的ApachePOI打开这种类型的excel文件吗? 事先谢谢你,安德烈。

  • 我正在写一个程序,它需要从excel文件中读取和写入数据,而不考虑格式(xls或xlsx)。 我知道ApachePOI,但它似乎有不同的类来处理xls文件(HSSF)和xlsx(XSSF)文件。 任何人都知道我将如何实现我在这里的目标。(也欢迎使用POI以外的API的想法)。

  • 我是编程界的新手。嗯,我正在尝试使用ApachePOI库读取excel文件(5行5列)。我实际上有两个相同问题的实现。在第一个代码片段中,我只是读取excel文件并将其打印到控制台中。 然而,现在我正试图将读取的excel数据保存到一个数组中。所以我想在动态获取excel行和列大小后设置数组大小。但令我惊讶的是,当我执行第二个代码段时,似乎“while(cellIterator.hasNext()

  • 问题内容: 尝试使用ApachePOI打开Excel时,我得到 我检查了。没有创建这样的文件夹。我正在使用Apache POI 3.6版。 有什么帮助吗?类似的代码在其他工作区中运行良好。在这里不知所措。 码: 问题答案: 您为什么要制作一个非常好的文件,将其包装在中,然后要求POI必须为您缓冲整个文件,以便可以进行随机访问?如果直接将文件直接传递给POI,生活会好很多,因此可以根据需要跳过它!

  • 我试图用Java(Apache POI)更新一个现有excel文件中的空单元格,这是我写的代码,我没有得到任何错误,值也没有改变。 谢谢:)

  • 我是java的初学者,我正在尝试做一个小的java程序,读取一个excel文件,并在文件末尾添加一个新行来更新文件。然后再次读取并使用新行ecc,ecc进行更新。 这是我读取的文件(boh.xls): 点击这里查看图片 当他转到“workbook.write()”时,它会向我抛出这个错误: 有什么建议吗?谢谢你们!