JavaからExcelスプレッドシートを操作する
実際には、テーブルからのデータを処理し、それらに基づいて別のテーブルを取得するという問題が発生しました。
この問題にはいくつかの解決策があります。
- マクロ-唯一の問題はVBAであり、その研究ではまったく時間がなく、その構文は似ていません
- C#のアプリケーションはここではすべて問題ないようですが、このアプリケーションを実行するマシンにはすぐに多くの追加要件が提示されます。
- .NET Framework
- インストール済みのオフィス
- Officeアプリケーション用にインストールされたPrimary Interoperability Assembly(PIA)
- JavaバンドルとApache POIライブラリ—このメソッドについて詳しく説明したい
Apache POIは、Microsoft形式のドキュメントにアクセスするためのJava APIです。
実際、
POI-HSSFプロジェクトはExcelテーブルで動作するように設計されています。 現在、2つのライブラリオプションがあります。
- POI 3.5ベータ5、およびOfficeオープンXMLサポート(2009-02-19)—Office 2007形式のサポートに取り組んでいます
- POI 3.2-FINALリリース(2008-10-19)-最新の安定版リリース
バージョン3.2での作業について説明します
Excelテーブルを操作するためのメインクラスは、Excelブックを表すorg.apache.poi.hssf.usermodelパッケージのHSSFWorkbookクラスです。
ファイルから本を読むには、次のコードを使用できます。
public static HSSFWorkbook readWorkbook(String filename) { try { POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(filename)); HSSFWorkbook wb = new HSSFWorkbook(fs); return wb; } catch (Exception e) { return null; } }
public static HSSFWorkbook readWorkbook(String filename) { try { POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(filename)); HSSFWorkbook wb = new HSSFWorkbook(fs); return wb; } catch (Exception e) { return null; } }
このメソッドは、すべてが成功した場合はクラスHSSFWorkbookのオブジェクトを返し、そうでない場合はnullを返します。
次の方法を使用して、変更を保存できます。
public static void writeWorkbook(HSSFWorkbook wb, String fileName) { try { FileOutputStream fileOut = new FileOutputStream(fileName); wb.write(fileOut); fileOut.close(); } catch (Exception e) {
public static void writeWorkbook(HSSFWorkbook wb, String fileName) { try { FileOutputStream fileOut = new FileOutputStream(fileName); wb.write(fileOut); fileOut.close(); } catch (Exception e) { // } }
メソッドはwbブックをfileNameに書き込みます
HSSFSheetクラスは、ワークブックシートで動作するように設計されています。
HSSFSheetクラスのオブジェクトは、次の方法で取得できます。
- 名前で
HSSFSheet sheet= wb.getSheet(" 3")
- 番号別(番号は0から始まります)
HSSFSheet sheet= wb.getSheet(0)
- 新しいシートを作成する
HSSFSheet sheet= wb.createSheet([" "])
次のオブジェクトは行-HSSFRowです。
3つの方法で文字列オブジェクトにアクセスすることもできます。
さて、データアクセスパスの最後のオブジェクトはHSSFCellクラスのオブジェクト、つまり行セルです。
次の方法で行オブジェクトからセルにアクセスできます。
セルオブジェクトから直接データを受信および設定できます。
- ブール値
boolean b = cell.getBooleanCellValue();
cell.setCellValue(b);
- 日付
Date date = cell.getDateCellValue();
cell.setCellValue(date);
- 数値
double d = cell.getNumericCellValue();
cell.setCellValue(d);
- 文字列値
String str = cell.getRichStringCellValue().getString();
cell.setCellValue(new HSSFRichTextString(str));
- フォーミュラ
String formula = cell.getCellFormula();
cell.setCellFormula(formula);
この知識は、単純なテーブルを処理するのに十分です。
このライブラリは、セルのフォーマット、マージ、フリーズなどの豊富な機会も提供します。
機能の詳細な説明は、彼らのウェブサイトで見つけることができます。
この方法は、オフィスとPIAパッケージのインストールを必要としないという点で、主に価値があります。