私はいくつかのデータを分析するためのアプリケーションを作成しており、その結果をExcelファイルで提示する必要があります。その意味で私はApache POI(3.11)を使い始めました。いくつかのレポートは再生に多くの時間とメモリを消費するため、私は調査を行い、いくつかのテストが解決策だと思った後にjxlsを見つけました。しかし今、私は問題を発見しました。両方のフレームワークを一緒に動かすことはできません。jxlsとapache poiを一緒に使用できますか?
- 私は、問題ありません、私はjxlsと私のテストを行うために、余分なパッケージを作っjxls-2.3.0
- で動作するためには、3.11から3.14へのApache POIを更新する必要が
Apache POIからjxlsに自分のクラスの1つを移行しようとしましたが、私はこのエラーを受け取りました:
これを可能にする方法をjava.lang.IllegalStateException: Cannot load XLS transformer. Please make sure a Transformer implementation is in classpath
。これは私のメソッドのコードです:private void prepareNewReport(File excelFile) { List perforaciones = makePerforacionReport .makePerforacionData(escenario);
}try (InputStream is = ReportePerforacionTotalDialog.class .getResourceAsStream("PerforacionTotal_template.xls")){ try (OutputStream os = new FileOutputStream(excelFile)) { Context context = new Context(); context.putVar("perforaciones", perforaciones); JxlsHelper.getInstance().processTemplate(is, os, context); LOGGER.logger.log(Level.INFO, "Archivo de perfortacion generado con éxito"); } } catch (IOException e) { LOGGER.logger.log(Level.SEVERE, "Problemas buscando el archivo", e); }
?。私はテストクラスを持っている同じプロジェクトで、別のパッケージとそのうまくいっている。ご覧のとおり、jxlsページの例とあまり違いはなく、インポートも同じです。私は私のプロジェクトのクリーン&ビルドを作るしようとしたとき
しかし、たとえ最悪の、そして私は、この他のエラーを得た:
java.lang.RuntimeException: com.sun.tools.javac.code.Symbol$CompletionFailure: class file for org.openxmlformats.schemas.officeDocument.x2006.docPropsVTypes.CTArray not found
私はjxlsとApacheを使用するために、私はimportedeすべてのライブラリを見てpoi、そしてそれは厳しいものです、そのクラスはそこにはありません。これら2つのフレームウォークの間に矛盾があるかどうかを見るために、jxlsを使用するために必要なすべてのライブラリをクラスパスから削除しました。クリーン&ビルド、問題ではない、私は自分の顧客に送信する私の.jarファイルが、不完全です。
Apache POIを使用するすべてのクラスを置き換えようとする可能性がありますが、それはPOIをプロジェクトで使用してデータを何度も読み込んだり、別の多くのファイルを書き込んだりするためです。私は使用テンプレートを利用するためにjxlsを使う予定でした。
私は何か助けや提案をお礼します。
私はFinbarr O'Bが私に語った。私は彼の勧告で2番目の問題を解決しましたが、私が最後に行ったインポートはooxml.schemas-1.1.jar、1.3でした。これはCTArrayクラスを含んでいないと思います。しかし、重要なのは最初のエラーで、実際の問題はgetResourcesAsStream()メソッドがファイルを見つけられなかったことですが、報告されたエラーは誤っていました。 –