使用apache-poi

时间:2018-04-02 09:04:33

标签: java apache-poi

我试图在'xlsx'文件中附加数据,但是获取空指针异常。我尝试使用现有的解决方案解决问题,但没有为我工作。

以下是我在xlsx文件中编写的代码。

package test;

import java.io.FileOutputStream;
import java.io.IOException;

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 Test1 {
    public static void main(String[] args) throws IOException {
        String excelFileName = "Y:\\RB and UCM Production Support\\RB\\RB Prod Support Knowledge Base\\UAR\\test.xlsx";//name of excel file

        String sheetName = "Sheet1";//name of sheet

        XSSFWorkbook wb = new XSSFWorkbook();
        XSSFSheet sheet = wb.createSheet(sheetName) ;

        //XSSFRow r = sheet.createRow(0);

        //iterating r number of rows
        for (int r=0;r < 5; r++ )
        {
            XSSFRow row = sheet.createRow(r);

            //iterating c number of columns
            for (int c=0;c < 5; c++ )
            {
                XSSFCell cell = row.createCell(c);

                cell.setCellValue("Cell "+r+" "+c);
                System.out.println("Cell "+r+" "+c);
            }
        }
//      wb.close();
//      String excelFileName1 = "Y:\\RB and UCM Production Support\\RB\\RB Prod Support Knowledge Base\\UAR\\test1.xlsx";
        FileOutputStream fileOut = new FileOutputStream(excelFileName);

        //write this workbook to an Outputstream.
        wb.write(fileOut);

        fileOut.flush();
        fileOut.close();
        wb.close();
    }
}

此外,我已将所有jar文件添加到项目路径中。

Project and jar file added 此外,在执行项目时,会出现错误弹出窗口。 下面是相同的屏幕截图。

Error

运行代码时遇到错误。 nullPointerException

请帮助!!!!

1 个答案:

答案 0 :(得分:0)

这似乎是构建问题,或者您没有使用正确的Poi.jar。

//Implementation org.apache.poi.POIXMLDocument.write(OutputStream)
public final void write(OutputStream stream) throws IOException {
    //force all children to commit their changes into the underlying OOXML Package
    Set<PackagePart> context = new HashSet<PackagePart>();
    onSave(context);
    context.clear();

    //save extended and custom properties
    getProperties().commit();

    getPackage().save(stream);
}

根据附加的错误屏幕截图,发生getProperties()异常,当POI jar没有获取基础属性或在没有OPCPackage时无法创建属性时发生。

注意: POI在您创建XSSFWorkbook()

的实例时创建OPCPackage

参考:XSSFWorkbook()的Javadoc以获取更多详细信息:

要获得有效的jar,请使用以下链接/或使用maven依赖项: https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml/3.17