2013-09-06 4 views
0

Я создал регистрационную форму, которая собирает данные от пользователя и отображает ее в Jtable, затем я хочу разрешить пользователю нажимать кнопку, чтобы экспортировать содержимое Jtable в форму excel. В таблице отображения он может отображать все пользовательские данные, но когда я экспортирую в excel, он отображает только имена столбцов и первую строку данных, поэтому я хочу знать, сделал ли я это неправильно?Jtable to Excel в Java


вход пользователя:

ArrayList<ArrayList<String>> list = new ArrayList<ArrayList<String>>(); 

String[] columnNames = new String[] {"First Name", "Last Name", "Email", "Degree", "Year", "Event"}; 

Object[][] tabledata = new Object[1][6]; 


    String fn = FirstName.getText(); 
    String ln = LastName.getText(); 
    String em = Email.getText(); 
    String re = ReEnter.getText(); 
    String de = Degree.getSelectedItem().toString(); 
    String yr = Year.getSelectedItem().toString(); 
    String ev = EventDate.getSelectedItem().toString(); 

    ArrayList<String> data = new ArrayList<String>(); 

    data.add(fn); 
    data.add(ln); 
    data.add(em); 
    data.add(de); 
    data.add(yr); 
    data.add(ev); 
    list.add(data); 

    //Set fields to empty   
      FirstName.setText(""); 
      LastName.setText(""); 
      Email.setText(""); 
      ReEnter.setText(""); 
      Degree.setSelectedItem(null); 
      Year.setSelectedItem(null); 
      EventDate.setSelectedItem(null); 

    // print data to table 
      Object[][] temp = new Object[tabledata.length+1][6]; 
       for(int i=0;i<tabledata.length;i++){ 
        for(int j=0;j<6;j++){ 
         temp[i][j] = tabledata[i][j]; 
        } 
       temp[tabledata.length-1][0]= fn; 
       temp[tabledata.length-1][1]= ln; 
       temp[tabledata.length-1][2]= em; 
       temp[tabledata.length-1][3]= de; 
       temp[tabledata.length-1][4]= yr; 
       temp[tabledata.length-1][5]= ev; 
       } 
      tabledata = temp; 
      table.setModel(new DefaultTableModel(tabledata, columnNames)); 
       } 
       } 

Экспорт данных в Excel:!

try { 
     TableModel model = table.getModel(); 

     File file = new File("member.xls"); 
     FileWriter output = new FileWriter(file); 


     for(int i = 0; i <model.getColumnCount(); i++){ 
      output.write(model.getColumnName(i) + "\t"); 
     } 

     output.write("\n"); 

     for(int k=0;k<model.getRowCount();k++) { 
      for(int j=0;j<model.getColumnCount();j++) { 
       output.write(model.getValueAt(k,j).toString()+"\t"); 
      } 
      output.write("\n"); 


     output.close(); 
    } 
    } 
    catch(Exception e) { 
     e.printStackTrace(); 
    } 

[Запустить программу] [1]: http://i.stack.imgur.com/T99L5.png [вывезенных первенствует файл] [2]: http://i.stack.imgur.com/ZGy3Z.png

ответ

0

Проверьте брекетинг: P

output.close() Вы называете внутри первого для цикла для распечатки данных. Это закрывает файл перед тем, как перейти во вторую строку и далее.

+0

Я не уверен, потому что если я вызову output.close() вне первого цикла for, файл excel будет пустым – user2752558