簡體   English   中英

excel,Apache Poi,無法寫入單元格

[英]excel, Apache Poi, unable to write to cell

我得到了一個項目,該項目需要我從excel文件中提取信息,對數據進行一些計算,然后將信息寫回到excel工作表中。 由於某種原因,我的一部分數據確實會饋入單元格中。 下面給出一個例子。

package ExcelDocs;

import java.io.FileOutputStream;

import org.apache.poi.xssf.usermodel.*;
import org.apache.poi.ss.usermodel.*;

public class Trial{

    public static void main(String[] agrs){

        Workbook wb=new XSSFWorkbook();
        Sheet ws=wb.createSheet("Testing");
        Cell c1=ws.createRow(0).createCell(0);
        c1.setCellValue("hello");
        Cell c2=ws.createRow(1).createCell(1);
        c2.setCellValue("how are you?");
        for(int i=1;i<7;i++){
            Cell c3=ws.createRow(i).createCell(0);
            c3.setCellValue(i);
        }

        try{ 
            FileOutputStream out=new FileOutputStream("ANISH.xlsx");
            wb.write(out);
            out.close();
        } catch(Exception e){
            System.out.println("unable to write to excel");
        }

    }
}

此代碼應生成以下輸出:

      COL1     COL2
ROW1  hello
ROW2           how are you?
ROW3
ROW4
ROW5
ROW6
ROW7

相反,我得到這個作為輸出

      COL1     COL2
ROW1  hello
ROW2           
ROW3
ROW4
ROW5
ROW6
ROW7

誰能告訴我為什么“你好嗎?” 被刪除? 我在其他程序中也遇到相同的問題。

該行被for循環中的行覆蓋:

Cell c2=ws.createRow(1).createCell(1);

那是因為您要覆蓋此for循環中在索引1處創建的行。

for(int i=1;i<7;i++){ // when i = 1
    Cell c3=ws.createRow(i).createCell(0); // it recreates a row at that index
    c3.setCellValue(i); // and re-writes it here in the loop.
}

您需要更改循環才能從索引2開始創建行。

for(int i=2; i<7; i++) { // now it starts from row index 2 and doesn't overwrite your previous row created at index 1
    Cell c3=ws.createRow(i).createCell(0); 
    c3.setCellValue(i);
}

for循環中, createRow破壞了之前創建的行。

因此,在循環之前,執行Cell c2=ws.createRow(1).createCell(1); 更改此設置,以便保存Row對象。

Row r = Cell c2=ws.createRow(1);
r.createCell(1);

並在循環中也使用r

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM