2016-10-24 5 views
0

私は簡単な質問があります。私はjtableを生成するプログラムを作ったので、このテーブルをいくつかの値で埋めることができます。私は、Javaプログラムには、このテーブルをインポートすることはできませんJTable - > Excel - > JTable - 延長付きの問題

public void exportTable(JTable table, File file) throws IOException { TableModel model = table.getModel(); FileWriter out = new FileWriter(file);

for (int i = 0; i < model.getColumnCount(); i++) { 
     out.write(table.getColumnModel().getColumn(i).getHeaderValue() + \t"); 
    } 
    out.write("\n"); 
    for (int i = 0; i < model.getRowCount(); i++) { 
     for (int j = 0; j < model.getColumnCount(); j++) { 
      if (model.getValueAt(i, j) != null) { 
       out.write(model.getValueAt(i, j).toString() + "\t"); 
      } else if (model.getValueAt(i, j) == null) { 
       out.write("\t"); 
      } 
     } 
     out.write("\n"); 
    }out.close(); 

:ここ

File f = new File("C:\Users\Gregory\Desktop\test.xls");

はJTableはExcelにエクスポートするクラスです:物乞い初め

は、私は、ファイルを定義しました。 jxl.read.biff.BiffException:OLEストリームを認識できません

このファイルを開くと、ファイルの形式が拡張子(.xls)と異なっているというメッセージが表示されます。だから私は "名前を付けて保存"をクリックし、提案された拡張子は.txtです。私はファイルを.xls(Javaプログラムによって保存されたものと同じファイルのようです)で保存し、JTableをJavaプログラムにインポートすることができます。誰でも正しい拡張子でファイルを保存する方法を提案できますか?

+0

拡張子がXLSのファイルには、カスタム形式があります。データはテキストとして保存されません。それはあなたが "SaveAs"オプションを持っている理由です。カスタム形式をテキスト形式に変換できます。 – camickr

+0

しかし、このプログラムの私のビジョンは、JTableをExcelにエクスポートするのと同じフォーマットでExcelにエクスポートすることです。(例えば、区切り文字を変更する必要があるかもしれません。 JTable - セルごとにセルを作成し、このセルをプログラムにエクスポートしてJTableを作成するより可能ですか?一般的には、私の望むように動作しますが、手動で "Save as"をクリックして ".xls" - このファイルからjtableを作成することができます – Grzegorz

+0

".xls"ファイルを見るためにエディタを使用したことがありますか? ".cvs"または ".txt"ファイルに表示されるようなテキストは含まれていませんMicrosoftが作成した ".xls"仕様を読み、ファイルを作成したい場合は、幸いです。 – camickr

答えて

0

は、パラメータでパスがは、生成されたファイルのパスを渡すと、パラメータ名前では、あなたのファイルのために希望の名前を渡します。 拡張機能の動的ファイルを受け取るようにメソッドシグネチャを変更することができます。パラメータとして".xls"を置き換えてください。

private void download(HttpServletRequest request, HttpServletResponse response, String path, 
     String name) throws IOException 
{ 
    OutputStream out = null; 
    try 
    { 
     out = response.getOutputStream(); 
    } 
    catch (IOException e) 
    { 
     e.printStackTrace(); 
    } 
    File arquivo = new File(path); 
    String sContentType = null; 
    sContentType = "application/pdf"; 
    response.setContentType(sContentType); 
    response.addHeader("content-disposition", "attachment; filename=" + name + ".xls"); 
    InputStream in = null; 
    in = new BufferedInputStream(new FileInputStream(arquivo)); 
    if (in != null) 
    { 
     response.setContentLength((int) in.available()); 
     int l; 
     byte b[] = new byte[4096]; 
     while ((l = in.read(b, 0, b.length)) != -1) 
     { 
      out.write(b, 0, l); 
     } 
     out.flush(); 
     in.close(); 
    } 
    out.close(); 

}