2017-12-18 11 views
0

Webテーブルを使用して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行に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++); 
関連する問題