2013-11-01 2 views
0

Я использую JXL api. Я хочу, чтобы заполнить таблицу первенствовать, что уже есть содержание, как:Как написать таблицу 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

Как заявил rgettman в this question, я бы также посоветовал использовать Apache POI для обработки Excel файлы с JAVA.

Для добавления значений с помощью POI, вам просто нужно, чтобы получить текущее количество строк:

int rows = sheet.getPhysicalNumberOfRows(); 

POI хорошо документированный и вы легко найдете несколько примеров кода на сети.

0

вы могли бы попробовать что-то вроде

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

или вы можете использовать Apache POI Theres хороший учебник here.

+0

подам придется создать еще одну рабочую книгу? например: WritableWorkbook workbookVazio = Workbook.createWorkbook (файл); , и мне нужно будет создать лист WritableSheet1 = workbookVazio.createSheet («Первый лист», 0); слишком ? – Murilo

+0

@Murilo no, вы уже создали книгу и экземпляры для записи, чтобы использовать их. Все, что вам нужно сделать, это перебрать лист1, используя следующийFreeRow в качестве отправной точки. – CoffeeTime

Смежные вопросы