95

2つのAPIのうち、Excelシートの読み取り/書き込み/編集が簡単なのはどれですか?これらのAPIはCSV拡張機能をサポートしていませんか?

file.xlsとfile.xlsxにJXLを使用すると、次のような例外が発生します。

jxl.read.biff.BiffException: Unable to recognize OLE stream
    at jxl.read.biff.CompoundFile.<init>(CompoundFile.java:116)
    at jxl.read.biff.File.<init>(File.java:127)
    at jxl.Workbook.getWorkbook(Workbook.java:268)
    at core.ReadXLSheet.contentReading(ReadXLSheet.java:46)
    at core.ReadXLSheet.init(ReadXLSheet.java:22)
    at core.ReadXLSheet.main(ReadXLSheet.java:72)

.xlsと.xlsxの両方の拡張子。私が使用しているJavaのバージョンは次のとおりです:JDK1.6

4

4 に答える 4

260

JXL (現在は「JExcel」) とApache POIの両方を使用しました。最初は JXL を使っていましたが、今は Apache POI を使っています。

最初に、両方の API が同じ最終機能を持つものを次に示します。

  • どちらも無料です
  • セルのスタイリング: 配置、背景 (色とパターン)、境界線 (種類と色)、フォントのサポート (フォント名、色、サイズ、太字、斜体、取り消し線、下線)
  • 数式
  • ハイパーリンク
  • 結合されたセル領域
  • 行と列のサイズ
  • データのフォーマット: 数値と日付
  • セル内でのテキストの折り返し
  • フリーズペイン
  • ヘッダー/フッターのサポート
  • 既存および新規のスプレッドシートの読み取り/書き込み
  • どちらも、読み取ったスプレッドシート内の既存のオブジェクトを可能な限りそのまま維持しようとします。

ただし、多くの違いがあります。

  • おそらく最も重要な違いは、Java JXL が Excel 2007 以降の ".xlsx" 形式をサポートしていないことです。古い BIFF (バイナリ) ".xls" 形式のみをサポートします。Apache POI は、共通の設計で両方をサポートします。
  • さらに、JXL API の Java 部分は 2009 年 (これを書いている時点で 3 年と 4 か月前) に最後に更新されましたが、C# API があるようです。Apache POI は積極的に維持されています。
  • JXL は条件付き書式設定をサポートしていませんが、Apache POI はサポートしていますが、これはそれほど重要ではありません。独自のコードで条件付きでセルを書式設定できるからです。
  • JXL はリッチ テキスト形式、つまりテキスト文字列内のさまざまな形式をサポートしていません。Apache POI はそれをサポートしています。
  • JXL は、水平/垂直、+/- 45 度、積み上げなど、特定のテキストの回転のみをサポートします。Apache POI は、任意の整数の度数と積み上げをサポートします。
  • JXL は図形の描画をサポートしていません。Apache POI はそうです。
  • JXL は、横/縦、余白、用紙サイズ、ズームなど、ほとんどのページ設定をサポートしています。Apache POI は、これらすべてに加えて、繰り返し行と列をサポートします。
  • JXL は分割ペインをサポートしていません。Apache POI はそうです。
  • JXL はチャートの作成または操作をサポートしていません。そのサポートは Apache POI にはまだありませんが、API はゆっくりと形成され始めています。
  • Apache POI には、JXL よりも広範なドキュメントとサンプルが用意されています。

さらに、POI には、メインの「ユーザーモデル」API だけでなく、スプレッドシートのコンテンツを読み取るだけの場合のイベントベースの API も含まれています。

結論として、より優れたドキュメント、より多くの機能、活発な開発、および Excel 2007+ 形式のサポートのために、私は Apache POI を使用しています。

于 2013-02-20T18:12:07.553 に答える
13

POIを利用しました。

それを使用する場合は、それらのセルフォーマッターに注意してください。セルのたびに作成するのではなく、作成して数回使用すると、メモリ消費量が膨大になるか、データが大きくなります。

于 2013-02-20T13:14:37.753 に答える
5

私は JXL に詳しくありませんが、POI を使用しています。POI は適切に管理されており、バイナリ .xls 形式と、Office 2007 で導入された新しい xml ベースの形式の両方を処理できます。

CSV ファイルは Excel ファイルではなく、テキスト ベースのファイルであるため、これらのライブラリはそれらを読み取りません。自分で CSV ファイルを解析する必要があります。私は CSV ファイル ライブラリを認識していませんが、調べたこともありません。

于 2013-02-20T13:43:26.233 に答える
1

Java で「プレーンな」CSV ファイルを読み取るには、OpenCSV というライブラリがあり、ここから入手できます: http://opencsv.sourceforge.net/

于 2014-01-03T15:43:15.913 に答える