使用Apache POI在Excel中创建行

时间:2013-09-02 22:19:13

标签: java excel apache-poi

我正在开发一个java应用程序。这个想法是:创建一个电子表格,打开它,让用户输入数据,然后用户必须按一个按钮,程序读取用户输入的数据。

我有一个创建此工作簿的方法

    private void createExcelSheet (Workbook wb, String path) throws Exception{
    try{

        wb = new XSSFWorkbook ();
        XSSFSheet ws = (XSSFSheet) wb.createSheet("Initial Data");



        try{
        out = new FileOutputStream (path);
        wb.write(out);
        Process p = Runtime.getRuntime().exec(
        "rundll32 url.dll, FileProtocolHandler " + path);
        }
        catch (Exception e){
            e.printStackTrace();
        }

但是,当用户输入数据时,java无法读取它,因为NullException b / c行不存在。

我继续做了一个看起来创造了一定数量的行,缺点是用户必须输入行数(有时候是未知的)但是现在让它硬编码:

    private void createExcelSheet (Workbook wb, String path) throws Exception{
    try{

        wb = new XSSFWorkbook ();
        XSSFSheet ws = (XSSFSheet) wb.createSheet("Initial Data");


        for (int i = 0; i < 5; i++){
            Row row = ws.createRow(i);


        }
        try{
        out = new FileOutputStream (path);
        wb.write(out);
        Process p = Runtime.getRuntime().exec(
        "rundll32 url.dll, FileProtocolHandler " + path);
        }
        catch (Exception e){
            e.printStackTrace();
        }

所以现在它工作正常,我尝试输入最多5行,所以工作正常。然而,然后我尝试输入比我实际创建的行更多的行,并期望某种OutOfBound异常,但所有内容都被读取并完美地工作。那么我尝试了以下内容:

    private void createExcelSheet (Workbook wb, String path) throws Exception{
    try{

        wb = new XSSFWorkbook ();
        XSSFSheet ws = (XSSFSheet) wb.createSheet("Initial Data");



            Row row = ws.createRow(0);



        try{
        out = new FileOutputStream (path);
        wb.write(out);
        Process p = Runtime.getRuntime().exec(
        "rundll32 url.dll, FileProtocolHandler " + path);
        }
        catch (Exception e){
            e.printStackTrace();
        }

如您所见,我只创建了第一行,但不知何故,它创建了工作簿中的所有行。如果我只创建一行并特别指出索引0,为什么它会这样工作。

我现在需要任何解决这个问题的代码,我只想了解逻辑。

0 个答案:

没有答案