2013-11-01 114 views
0

我正在使用JXL api。我想,以填補已經有內容,如Excel表格:如何編寫從最後一個值開始的Excel表格?

123 321 12324 

123 321 231 

123 321 343 

123 321 454 

123 321 565 

我想寫第五行之後的下一個值,但我不知道該怎麼做。我只知道如何創建和寫入excel表,如果它是空的。我知道如何閱讀它。我在想,首先我必須讀取它,並且包含表格值的數組將幫助我選取表格的最後一個值,然後從其中開始寫入其他值。我有以下方法:

閱讀:

arquivo = new File("C:\\Users\\maniceto\\Desktop\\arq.xls"); 

     planilha = Workbook.getWorkbook(arquivo); 

     Sheet[] abas = planilha.getSheets(); 

     aba = planilha.getSheet(0); 

     matriz = new String[aba.getRows()][aba.getColumns()]; 

     Cell[] cel; 

     for (int i = 0; i < matriz.length; i++) { 
      cel = aba.getRow(i); 

      for (int j = 0; j < matriz[0].length; j++) { 
       matriz[i][j] = cel[j].getContents(); 
      } 
     } 

     System.out.println("Lines " + matriz.length); 
     System.out.println("Columns " + matriz[0].length); 
     System.out.println(""); 

     for (int i = 0; i < matriz.length; i++) { 
      for (int j = 0; j < matriz[0].length; j++) { 
       System.out.print(matriz[i][j] + "\t"); 
      } 
      System.out.println(""); 
     } 

要編寫一個空的Excel表格:

WritableWorkbook workbookVazio = Workbook.createWorkbook(file); 


      WritableSheet sheet1 = workbookVazio.createSheet("First Sheet", 0); 
      TableModel model = table.getModel(); 

      for (int i = 0; i < model.getColumnCount(); i++) { 
       Label column = new Label(i, 0, model.getColumnName(i)); 
       sheet1.addCell(column); 
      } 
      int j = 0; 
      for (int i = 0; i < model.getRowCount(); i++) { 
       for (j = 0; j < model.getColumnCount(); j++) { 
        Label row = new Label(j, i + 1, 
          model.getValueAt(i, j).toString()); 
        sheet1.addCell(row); 
       } 
      } 
      workbookVazio.write(); 
      workbookVazio.close(); 

回答

0

正如this question由rgettman說,我也建議使用Apache POI處理Excel中用JAVA文件。

要追加使用POI值,你只需要獲得行的當前數量:

int rows = sheet.getPhysicalNumberOfRows(); 

POI是有據可查的,你會很容易在網絡上找到幾個代碼示例。

0

你可以嘗試像

int lastRowNum = workbookVazio.getSheet("First Sheet").getLastRowNum(); 
int nextFreeRow = lastRowNum+1; 

,或者您可以使用Apache POI那裏有一個很好的教程 here.

+0

但我會把創建另一個工作簿?如:WritableWorkbook workbookVazio = Workbook.createWorkbook(file); ,我將不得不創建一個WritableSheet sheet1 = workbookVazio.createSheet(「First Sheet」,0);呢? – Murilo

+0

@Murilo不,您已經創建了工作簿和可寫表單實例,以便使用它們。所有你需要做的就是使用nextFreeRow作爲你的出發點迭代sheet1。 – CoffeeTime

相關問題