2014-03-04 35 views
0

我想要保存使用jxl的excel文件,但是當我嘗試保存文件時,必須重新輸入並保存純文本而不包含內容。我正在使用一個類來生成excel文件。使用Filechooser保存文件JExcel

public class lsheet { 
    public void fillData(JTable table, File file){ 
     try{ 
      WritableWorkbook workbook1 = Workbook.createWorkbook(file); 
      WritableSheet sheet1 = workbook1.createSheet("Data 1", 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); 
       } 
      } 
      workbook1.write(); 
      workbook1.close(); 
     }catch(Exception ex){ 
      ex.printStackTrace(); 
     } 
    } 
} 

這個動作按鈕,怎麼辦,顯示filechooser與加載的數據在表中?

lsheet sht = new lshtCalc(); 
java.util.Date today = new java.util.Date(); 
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd"); 
try{ 
    String name=""; 
    JFileChooser file=new JFileChooser(); 
    file.showSaveDialog(this); 
    File save =file.getSelectedFile(); 
    if(save !=null){ 
     FileWriter save = new FileWriter(save + ".xls"); 
     sht.fillData(tblCliente, new File("Report-Client-"+ sdf2.format(today).toString()+".xls")); 
     save.close(); 
    } 
}catch(Exception ex){ 
    ex.printStackTrace(); 
} 

回答

0

要傳遞到fillData方法的文件對象是你帶時間戳創建因此它會從你的JTable內容工作區創建具有該名稱的文件的東西。

您使用JFileChooser選擇的文件僅用於創建文件寫入器並關閉它。所以它會在您選擇的位置創建一個空文件。

試試這個變化:

  JFileChooser file=new JFileChooser(); 
      file.showSaveDialog(this); 
      File save =file.getSelectedFile(); 
      if(save !=null){ 

       sht.fillData(tblCliente, save); 

      } 
     }catch(Exception ex){ 
      ex.printStackTrace(); 
     }