2013-11-01 52 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

相关问题