ジャバ:データ (データベース、クエリ、またはテーブルの内容) を Excel にエクスポートするにはどうすればよいですか?
-
27-10-2019 - |
質問
テーブルの内容またはクエリのデータを Excel ファイルにエクスポートする方法を知りたいです。また、エクスポートするファイル拡張子は、xls と csv のどちらが良いですか?
前もって感謝します。
編集:私が望んでいるのは、ユーザーがボタンを押すことで、クエリの結果を含む JTable の内容を Excel 互換ファイルにエクスポートできるようにすることです。
何が最善の方法なのか分かりません。いろいろな方法を見つけましたが、どれに従うべきかわかりません。JasperReport を生成して、同じデータを Excel にエクスポートすることは可能ですか?
Edit2:わかりましたので、ほとんどの人が提案しているように、.csvにエクスポートすることにしました。最後の質問は、opecsv とどちらを使用するのが良いかということです。 javacsv?どちらも本当に使いやすそうです。
ありがとう!
解決
CSV へのエクスポートは簡単で、データによっては手動で行うこともできます (新しい行はそれぞれ新しい行で、セルの値はカンマで区切られます)。これにはオープン ソース ライブラリが用意されています (http:// opencsv.sourceforge.net/)、結果セットを出力にコピーするコードは簡単である必要があります。
他のヒント
Excelが絶対に必要な場合は、Apache POIライブラリを使用してください。
テキストファイル(CSV)を作成し、データベースの結果を記述する必要があります。
PrintWriter out
= new PrintWriter(new BufferedWriter(new FileWriter("foo.csv")));
while(rs.next())
{
out.println(String.format("%s,%s,%s",rs.getString(1),rs.getString(2),rs.getString(3));
}
すでに与えられた答えに加えて、私はCSVを好むと言いたいです。
CSVはアプリケーションに依存しており、他の言語/プログラム(Python、R、Java、Excelなど)で後でデータを操作できます。
私はjxlsで大成功を収めました: http://jxls.sourceforge.net/
これにより、すべてのフォーマットなどを備えたネイティブExcelテンプレートでJSPのようなタグを使用できます。マップ構造を介して、Java API呼び出しからそのExcelテンプレートに置き換えるためにデータを渡すことができます(リクエストスコープvarsに類似)。
これは、フォーマットされたExcel出力が必要な場合、JasperReportsの優れた軽量の代替品です。