0

非常に大きな XLS ファイルを作成する必要があります。Apache POI を試しましたが、使用するにはメモリが多すぎます。

StackOverflow をざっと見てみると、Cocoon プロジェクト、特に HSSFSerializer への参照がいくつかあることに気付きました。これは、XLS ファイルをディスクに書き込むためのよりメモリ効率の高い方法のようです (私が読んだことから、間違っていたら訂正してください!)。

ここで説明されている使用例に興味があります: http://cocoon.apache.org/2.1/userdocs/xls-serializer.html。ファイルを形式で書き出すためのコードは既に作成しましたが、を呼び出して XLS に変換するGnumeric方法が見つからないようです。HSSFSerializer

さらに読むと、Cocoon プロジェクトは一種の Web フレームワークのようです。私は間違ったツリーを吠えている可能性が非常に高いかもしれませんが、

ファイルを読み込んで実行し、HSSFSerializerその出力を別のファイルに書き込む例を教えてください。ドキュメントからそうする方法は明らかではありません。

4

2 に答える 2

0

私の友人、HSSF シリアライザーは POI の一部です。xml で特定の属性をシリアル化するように設定しているだけです (ただし、それを作成するにはプロセス全体が必要です)。また、XLS を作成するためだけにこのフレームワークを使用してパイプライン全体を設定することは、アプリのアーキテクチャを変更するため、奇妙に思えます。それはあなたの決定ですか?

ドキュメントから:

スプレッドシートを生成するもう 1 つの方法は、Cocoon シリアライザーを使用することです (ただし、HSSF を間接的に使用することになります)。Cocoon を使用すると、スタイルシートを適用してシリアライザーを指定するだけで、任意の XML データソース (たとえば、SQL で出力する ESQL ページなど) をシリアライズできます。

メモリが問題になる場合は、POI で XSSF または SXSSF を試してください。

于 2012-07-10T18:06:59.990 に答える
0

「XLS」とは、Office 2007 より前の特定のバージョンのこの「Horrible SpreadSheet Format」(HSSF の略) を意味するのか、それとも最近のバージョンの MS Office で開くことができるものすべてを意味するのかはわかりません。 、OpenOffice、...

したがって、クライアントの要件 (つまり、Excel ファイルを開く要件) によっては、.XLSXファイルの生成という別のオプションが利用できる場合があります。

適切な grammar で XML ファイルを生成することになります。これは、Gnumeric XML ベースのファイル形式で、技術的な問題やメモリ効率の問題を発生させることなく、既にそれを行っているように見えるため、状況に適しているようです。

Excel やその他のクライアントが使用できる、他の XML ベースのスプレッドシート形式が存在することに注意してください。開いているドキュメント ファイル形式を掘り下げたいと思うかもしれません。


Apache Cocoon などを使用するかどうかについては、次のようにします。

  • Cocoon は確実に XSL 処理をホストできます。バッチ (Cocoon CLI) 処理は、Cocoon が必要であるが、Web アプリケーションとして実行する必要がない場合に利用できます (ただし、私が覚えている限りでは、CLI 機能は 2.1 シリーズの最新のビルドで壊れていました)。Cocoon には、さらなる要件に対応できる多くの機能とテクノロジが付属しています。
  • XSL 変換を実行するだけの場合、Cocoon はやり過ぎかもしれません。XSL 変換には、選択できる有名で軽量なツールがたくさんあります。
于 2012-10-12T10:32:26.303 に答える