用意したExcelのテンプレートに値を出力したいと思っております。
一般的には(?)poiの使用があるかと思いますが、
SXSSFではテンプレートを読み込み、そこに出力。ということは可能でしょうか。
WriteOnlyだったと思っていますが、それは値を取得が無理っていうわけではなく、
そもそもExcelファイル自体取得が無理なのでしょうか。
HSSFやXSSFはメモリ展開ですので、リソース消費が激しく使えないので。。。
他に低メモリでテンプレートへの出力が可能なAPIや実装方式などあれば教えて頂けますでしょうか。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
ベストアンサー
既存のエクセルをテンプレートとしてSXSSFWorkbookを作ることは可能でしたが、既存の行に値を盛り込むのは無理なようです。
データを追加することは可能ですが、シートのコピーもできないようなので、なかなか困った感じですね…。
java
1import java.io.File; 2import java.io.FileOutputStream; 3import java.io.IOException; 4import java.io.InputStream; 5import java.io.OutputStream; 6 7import org.apache.poi.xssf.streaming.SXSSFSheet; 8import org.apache.poi.xssf.streaming.SXSSFWorkbook; 9import org.apache.poi.xssf.usermodel.XSSFWorkbook; 10 11public class PoiSample { 12 public void loadAndSave() throws IOException { 13 14 InputStream inp = Thread.currentThread().getClass().getResourceAsStream("/template.xlsx"); 15 // 読み込み対象のワークブック 16 XSSFWorkbook loadbook = new XSSFWorkbook(inp); 17 18 // Streaming XSSF Workbookから読み込む 19 SXSSFWorkbook book = new SXSSFWorkbook(loadbook); 20 21 SXSSFSheet sheet = book.getSheetAt(0); 22 23 // たとえば30行目まで値があった場合は次のようにする 24 sheet.createRow(31).createCell(0).setCellValue("12345678"); 25 26 // 保管する 27 File outputFile = new File("output.xlsx"); 28 OutputStream outp = new FileOutputStream(outputFile); 29 book.write(outp); 30 31 book.close(); 32 } 33 34 public static void main(String argv[]) throws Exception { 35 PoiSample poi = new PoiSample(); 36 poi.loadAndSave(); 37 } 38}
投稿2016/11/11 10:31
総合スコア12011
0
こんにちは
Spire.XLS FOR JAVAという無料のライブラリをお勧め。
このもので解決できるそうです。
投稿2020/12/04 02:32
退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
XSSFではテンプレートを読み込み、そこに出力。ということは可能でしょうか。
可能ですが、工夫せずに書くと、テンプレ元ファイルが書き換わったりします。
私は、以下のサイトを参考にテンプレ読み込みして書き込んで・・
というソースを仕事で書きました。
http://so-kai-app.sakura.ne.jp/blog/category/java/apache-poi/
XSSFになってリソース消費は抑えられるようになったものの、
体感ではまだまだ、もっさりした応答になりますね・・。
HSSF時代は先にマクロ着きExcelを渡しておいて、CSVダウンロードしてもらってたりとか、
VBSをダウンロードしてもらって実行したりとかしたものですが・・。
(現在は全くお勧めできません。)
投稿2016/11/11 05:06
総合スコア716
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/11/11 05:24
2016/11/11 05:59
2016/11/11 07:48
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/11/14 08:35
2016/11/15 05:14