質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Q&A

解決済

2回答

4932閲覧

apache poiでワークブック作成に時間が掛かる(6分ぐらい)

kouji

総合スコア29

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

0グッド

0クリップ

投稿2017/03/24 05:42

編集2017/03/24 05:57

apache poiで下記のようにしてWorkBookを作成していますが、
WorkbookFactory.create(new FileInputStream(file))

この処理に6分ほど時間が掛かってしまいます。
Excelファイルは466KBでそんなに大きくないように思うのですが、何か早くする方法はないでしょうか。

因みに下記を参考にして
http://stackoverflow.com/questions/37485162/poi-method-workbookfactory-create-performance-issue

WorkbookFactory.create(file)
としても変わりませんでした

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

エクセルファイル内の下記を削除した所一瞬で取り込めるようになりました
・外部ファイルのリンク
・非表示の名前
・空であるが存在しているセル

お騒がせいたしました・・

投稿2017/03/27 04:16

kouji

総合スコア29

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

参照先は「読込み」ですよね?

celeron 1.3GHz 2GBのノートで、下記のコードで 5秒、3kbyteですが。。。
poiは3.10です。

466KBとは、何か、データを埋め込んでられるのでしょうか?

import java.io.BufferedOutputStream; import java.io.FileOutputStream; import java.io.OutputStream; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class Poi { public static void main(String[] args) { System.out.println("start"); create_excel("poi.xlsx", "sheet1"); System.out.println("end"); } public static void create_excel(String file_name, String sheet_name) { // Excelブックの生成 XSSFWorkbook xssfWorkbook = new XSSFWorkbook(); // Sheetの生成 @SuppressWarnings("unused") XSSFSheet hssfSheet = xssfWorkbook.createSheet(sheet_name); // Excelブックの書き出し OutputStream outStream = null; try { outStream = new BufferedOutputStream(new FileOutputStream(file_name)); xssfWorkbook.write(outStream); } catch (Exception e) { System.out.println(e.toString()); } finally { try { outStream.close(); } catch (Exception e1) { System.out.println(e1.toString()); } } }

投稿2017/03/24 06:40

編集2017/03/24 06:44
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kouji

2017/03/24 06:45

ご返信ありがとございます。 >466KBとは、何か、データを埋め込んでられるのでしょうか? →プルダウンを作成する為の関数などはありますし、シートも6つあります。
退会済みユーザー

退会済みユーザー

2017/03/24 06:51

とりあえず、sheetが1つで、空のBookの作成時間を計られてみてはいかかでしょうか。 それとも、「プルダウンを作成する為の関数などはありますし、シートも6つあります」Bookを「作成」ではなく「変更」されているのでしょうか?
kouji

2017/03/27 02:23

>それとも、「プルダウンを作成する為の関数などはありますし、シートも6つあります」Bookを「作成」で>はなく「変更」されているのでしょうか? →言葉足らずでした。エクセルファイルの中身を読み取り、そのデータをDBにインサートしています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問