2017-12-18 234 views
0

我想通過網絡表格將數據寫入excel。
開始的行使用空白數據創建,最後一行填充數據,最後一個索引值。
即使數據存在於Arraylist中,其他行也沒有被填充數據。只有最後一個索引值被插入到Excel表格

public class Write_Excel {  
    public static `FileInputStream` `fis`;  
    public static FileOutputStream fos;  
    public static `HSSFWorkbook` `wb`;  
    public static `HSSFSheet` `sheet`;  
    public static `HSSFCell` `cell`; 
    public static `HSSFRow` `row`; 
    public static `int a = 0`; 

public static void write_Excel(String fileName, String sheetName, 
      `ArrayList`<String> `dataToWrite`) throws `IOException` { 
    fos = new `FileOutputStream(fileName); 
    wb = new HSSFWorkbook(); 
    sheet = `wb.createSheet(sheetName);` 
    `row = sheet.createRow(a++);` 
    for (int i = 0; i < 16; i++) { 
     cell = row.createCell(i); 
     System.out.println(dataToWrite.get(i).toString()); 
     cell.setCellValue(new HSSFRichTextString(dataToWrite.get(i))); 
     } 
    wb.write(fos); 
    fos.flush(); 
    } 
} 
+0

你只有一個要寫的字符串列表,你想要每行1個字符串,還是全部在同一行?或者每次調用該方法時在數據中添加一行? – Bentaye

+0

每次撥打方法 –

+0

時我都會添加一行新數據,我在下面添加了一個答案。 – Bentaye

回答

0

當你這樣做,你需要創建一個新的工作簿每次調用的函數,你剛剛結束抹去以前的。因此你只能得到最後一次通話的結果。

如果您想在每次調用時添加一行,請按照這種方式進行,您需要將行號和工作簿作爲類變量。此外,您需要掌握已經創建的工作表以追加到工作表。或者你也會抹去它。

public static void main(String[] args) { 
    try { 

     write_Excel("myFile.xls","sheetName", 
      Arrays.asList("value 1", "value 2", "value 3")); 

     write_Excel("myFile.xls","sheetName", 
      Arrays.asList("value 4", "value 5", "value 6")); 

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

    private static int newRowIndex = 0; 
    private static HSSFWorkbook workbook = new HSSFWorkbook(); 

    public static void write_Excel(String fileName, String sheetName, List<String> dataToWrite) throws IOException { 
    FileOutputStream fos = new FileOutputStream(fileName); 

    // open or create sheet 
    HSSFSheet sheet = workbook.getSheet(sheetName) != null ? 
     workbook.getSheet(sheetName) : 
     workbook.createSheet(sheetName); 

    // create a new row 
    HSSFRow row = sheet.createRow(newRowIndex ++); 

    // write your data in the new row 
    for (int colIndex = 0; colIndex < dataToWrite.size(); colIndex++) { 
     HSSFCell cell = row.createCell(colIndex); 
     cell.setCellValue(new HSSFRichTextString(dataToWrite.get(colIndex))); 
    } 

    workbook.write(fos); 
    fos.flush(); 
    fos.close(); 
    } 
+0

我用這個代碼的引用仍然是最後一個索引值插入到excel –

+0

我測試了這個代碼,它在xls文件中寫了2行。 – Bentaye

+0

在這種情況下,2行被創建,但第1行是空白的。 –

1

你應該加入這一行成環

HSSFRow row = sheet.createRow(a++);