2012-03-23 19 views
-1

JAVA Excel API vogellaで既存のExcelファイルを修正しようとしていますが、処理できません。私はExcelファイルを再作成する方法を見つけましたが、これは私が望むものではありません。誰かが助言を与えたり、ヒントを与えたり、簡単な例を共有することができます。JavaベースのAPIを使用したExcelの読み込み/書き込み - vogella

私は私が何をしようとしている共有しています:

/** 
    * Reading external file. 
    * 
    * @return Record[]; 
    * @throws IOException; 
    * @throws BiffException. 
    */ 
    public Record[] read() throws IOException { 
     File inputWorkbook = new File(inputFile); 
     Workbook w; 
     Record[] records = null; 
     int rowsCount = 0; 
     try { 
      w = Workbook.getWorkbook(inputWorkbook); 
      Sheet sheet = w.getSheet(0); 

      int columnsCount = sheet.getColumns(); 
      rowsCount = sheet.getRows(); 
      records = new Record[rowsCount]; 

      for (int rowIndex = 0; rowIndex < rowsCount; rowIndex++) { 
       Record record = new Record(columnsCount); 
       for (int columnIndex = 0; columnIndex < columnsCount; columnIndex++) { 
        Cell cell = sheet.getCell(columnIndex, rowIndex); 
        String value = cell.getContents(); 
        record.setRecordData(columnIndex, value); 
       } 
       records[rowIndex] = record; 
      } 
     } catch (BiffException e) { 
      errorMessage = 1; 
     } 

     return records; 
    } 

    /** 
    * Writing to existing excel file. 
    * 
    * @param records; 
    * @throws IOException; 
    * @throws WriteException; 
    * @throws BiffException. 
    */ 
    public void write(Record[] records) throws IOException, WriteException, BiffException { 
     File file = new File(inputFile); 
     WorkbookSettings wbSettings = new WorkbookSettings(); 

     wbSettings.setLocale(new Locale("en", "EN")); 

     Workbook workbook = Workbook.getWorkbook(file, wbSettings); 
     WritableWorkbook writableworkbook = Workbook.createWorkbook(file, workbook, wbSettings); 
     WritableSheet excelSheet = writableworkbook.getSheet(0); 

     createLabel(excelSheet); 
     createContent(excelSheet, records); 

     writableworkbook.write(); 
     writableworkbook.close(); 
    } 
+1

もっと具体的にすることで、あなたが望むものがわかりやすくなります。あなたがこれまで行ってきたことを投稿し、あなたが得ているものがあなたが望むものではないという事例を挙げてください。具体的ではなく、これは本当に答えることのできる質問ではありません。 – beny23

+1

@ beny23:既存のExcelファイルに、たとえば最初のシートに追加のカスタムデータを挿入したいとします。 – nenito

+0

「それを処理できません」ということを詳述する必要があります –

答えて

1

あなたが提供しているコードが書かれている特にすでに存在しているものを上書きする。これ行:

for (int rowIndex = 0; rowIndex < rowsCount; rowIndex++) 

は常に0行目から始まり、そこにあるすべてのものを上書きします。

はまた、以前、あなたが呼んでいる:すでに装着されている行数を教えてくれます

rowsCount = sheet.getRows(); 

。最後に入力された行の後に移入を開始すると、既にそこにあるすべてのものが保持されます。

+0

こんにちは!このメソッドは、一般的なExcelファイルに読み込まれるデータを読み込む責任があり、何も問題はありません。 – nenito

+0

問題は、既存のものからWritableSheetを作成する方法がわかりません。 – nenito

関連する問題