ApachePOI-クイックガイド

多くの場合、MicrosoftExcelファイル形式でレポートを生成するにはソフトウェアアプリケーションが必要です。場合によっては、アプリケーションが入力データとしてExcelファイルを受け取ることさえ期待されます。たとえば、会社の財務部門向けに開発されたアプリケーションは、Excelですべての出力を生成する必要があります。

MS Officeファイルを出力として生成するJavaプログラマーは、事前定義された読み取り専用APIを使用する必要があります。

Apache POIとは何ですか?

Apache POIは、プログラマーがJavaプログラムを使用してMS Officeファイルを作成、変更、および表示できるようにする一般的なAPIです。これは、Javaプログラムを使用してMicrosoft Officeファイルを設計または変更するために、Apache SoftwareFoundationによって開発および配布されているオープンソースライブラリです。これには、ユーザー入力データまたはファイルをMSOfficeドキュメントにデコードするためのクラスとメソッドが含まれています。

ApachePOIのコンポーネント

Apache POIには、MSOfficeのすべてのOLE2複合ドキュメントで機能するクラスとメソッドが含まれています。このAPIのコンポーネントのリストを以下に示します。

  • POIFS(不十分な難読化実装ファイルシステム)-このコンポーネントは、他のすべてのPOI要素の基本的な要素です。さまざまなファイルを明示的に読み取るために使用されます。

  • HSSF (恐ろしいスプレッドシート形式)-読み取りと書き込みに使用されます xls MS-Excelファイルの形式。

  • XSSF (XMLスプレッドシート形式)-次の目的で使用されます xlsx MS-Excelのファイル形式。

  • HPSF (恐ろしいプロパティセット形式)-抽出に使用されます property sets MS-Officeファイルの。

  • HWPF (恐ろしいワードプロセッサ形式)-読み取りと書き込みに使用されます doc MS-Wordの拡張子ファイル。

  • XWPF (XMLワードプロセッサ形式)-読み取りと書き込みに使用されます docx MS-Wordの拡張子ファイル。

  • HSLF (恐ろしいスライドレイアウト形式)-PowerPointプレゼンテーションの読み取り、作成、編集に使用されます。

  • HDGF (恐ろしいDiaGram形式)-次のクラスとメソッドが含まれています MS-Visio バイナリファイル。

  • HPBF (恐ろしいPuBlisher形式)-読み取りと書き込みに使用されます MS-Publisher ファイル。

このチュートリアルでは、Javaを使用してExcelファイルを操作するプロセスについて説明します。したがって、説明はHSSFおよびXSSFコンポーネントに限定されます。

Note −古いバージョンのPOIは、doc、xls、pptなどのバイナリファイル形式をサポートします。バージョン3.5以降、POIは、docx、xlsx、pptxなどのMS-OfficeのOOXMLファイル形式をサポートします。

Apache POIと同様に、Excelファイルを生成するためにさまざまなベンダーから提供されている他のライブラリがあります。これらには以下が含まれますAspose cells for Java Asposeによって、 JXL コモンズライブラリ、および JExcel チーム開発者による

この章では、Java ExcelAPIのいくつかのフレーバーとその機能について説明します。JavaExcel関連のAPIを提供しているベンダーはたくさんあります。それらのいくつかは、この章で検討されています。

Java用のセルを割り当てます

Aspose Cells for Javaは、ベンダーAsposeによって開発および配布された純粋にライセンスされたJava ExcelAPIです。このAPIの最新バージョンは8.1.2で、2014年7月にリリースされました。スプレッドシートの読み取り、書き込み、操作が可能なExcelコンポーネントを設計するための豊富で重いAPI(プレーンJavaクラスとAWTクラスの組み合わせ)です。

このAPIの一般的な使用法は次のとおりです-

  • Excelレポート、動的Excelレポートの作成
  • 忠実度の高いExcelのレンダリングと印刷
  • Excelスプレッドシートからデータをインポートおよびエクスポートします
  • スプレッドシートを生成、編集、変換する

JXL

JXLは、Selenium用に設計されたサードパーティのフレームワークであり、Webブラウザーでのデータ駆動型自動化(Webブラウザーでのデータの自動更新)をサポートします。ただし、スプレッドシートを作成、読み取り、書き込みするための基本的な機能を備えているため、JExcelAPIの共通サポートライブラリとしても使用されます。

基本的な機能は次のとおりです-

  • Excelファイルを生成する
  • ワークブックとスプレッドシートからデータをインポートする
  • 行と列の総数を取得します

Note − JXLは.xlsファイル形式のみをサポートし、大量のデータを処理できません。

JExcel

JExcelは、TeamDevによって提供される純粋にライセンスされたAPIです。これを使用すると、プログラマーは両方のExcelブックを簡単に読み取り、書き込み、表示、および変更できます。.xls そして .xlsxフォーマット。このAPIは、JavaSwingおよびAWTに簡単に組み込むことができます。このAPIの最新バージョンは、2009年にリリースされたJexcel-2.6.12です。

主な機能は次のとおりです-

  • Excelアプリケーション、ワークブック、スプレッドシートなどを自動化する
  • 通常のSwingコンポーネントとしてJavaSwingアプリケーションにワークブックを埋め込む
  • イベントリスナーをワークブックとスプレッドシートに追加する
  • ワークブックおよびスプレッドシートイベントの動作を処理するイベントハンドラーを追加します
  • ネイティブピアを追加してカスタム機能を開発する

Apache POI

Apache POIは、Apache Software Foundationが提供する100%オープンソースライブラリです。中小規模のアプリケーション開発者のほとんどは、Apache POI(HSSF + XSSF)に大きく依存しています。Excelライブラリのすべての基本機能をサポートしています。ただし、レンダリングとテキスト抽出が主な機能です。

この章では、WindowsおよびLinuxベースのシステムでApachePOIを設定するプロセスについて説明します。Apache POIは、複雑なセットアップ手順なしで、いくつかの簡単な手順に従って簡単にインストールし、現在のJava環境と統合できます。インストール中にユーザー管理が必要です。

システム要求

JDK Java SE 2 JDK1.5以降
記憶 1 GB RAM(推奨)
ディスクスペース 最小要件はありません
オペレーティングシステムのバージョン Windows XP以降、Linux

次に、ApachePOIをインストールする手順に進みましょう。

ステップ1:Javaのインストールを確認する

まず、システムにJavaソフトウェア開発キット(SDK)をインストールする必要があります。これを確認するには、作業しているプラ​​ットフォームに応じて、2つのコマンドのいずれかを実行します。

Javaのインストールが適切に行われている場合は、Javaインストールの現在のバージョンと仕様が表示されます。次の表に出力例を示します。

プラットホーム コマンド サンプル出力
ウィンドウズ

コマンドコンソールを開き、「-」と入力します。

\>java –version

Javaバージョン「1.7.0_60」

Java(TM)SEランタイム環境(ビルド1.7.0_60-b19)

Java Hotspot(TM)64ビットサーバーVM(ビルド24.60-b09、混合モード)

Linux

コマンドターミナルを開き、「-」と入力します。

$java –version

Javaバージョン「1.7.0_25」

JDKランタイム環境を開きます(rhel-2.3.10.4.el6_4-x86_64)

JDK 64ビットサーバーVMを開きます(ビルド23.7-b01、混合モード)

  • このチュートリアルの読者は、JavaSDKバージョン1.7.0_60がシステムにインストールされていることを前提としています。

  • Java SDKをお持ちでない場合は、現在のバージョンをからダウンロードしてください。 https://www.oracle.com/technetwork/java/javase/downloads/index.html そしてそれをインストールしてもらいます。

ステップ2:Java環境を設定する

Javaがマシンにインストールされているベースディレクトリの場所を指すように環境変数JAVA_HOMEを設定します。例えば、

シニア番号 プラットフォームと説明
1

Windows

JAVA_HOMEをC:\ ProgramFiles \ java \ jdk1.7.0_60に設定します

2

Linux

エクスポートJAVA_HOME = / usr / local / java-current

Javaコンパイラの場所のフルパスをシステムパスに追加します。

シニア番号 プラットフォームと説明
1

Windows

文字列「C:\ ProgramFiles \ Java \ jdk1.7.0_60 \ bin」をシステム変数PATHの最後に追加します。

2

Linux

エクスポートPATH = $ PATH:$ JAVA_HOME / bin /

コマンドを実行します java -version 上で説明したコマンドプロンプトから。

ステップ3:ApachePOIライブラリをインストールする

ApachePOIの最新バージョンをからダウンロードします https://poi.apache.org/download.htmlその内容を、必要なライブラリをJavaプログラムにリンクできるフォルダに解凍します。ファイルがCドライブ上のフォルダに収集されていると仮定します。

次の画像は、ダウンロードしたフォルダ内のディレクトリとファイル構造を示しています。

5つの完全なパスを追加します jars 上の画像で強調表示されているように、CLASSPATHに追加します。

シニア番号 プラットフォームと説明
1

Windows

次の文字列をユーザー変数の最後に追加します

クラスパス-

「C:\ poi-3.9 \ poi-3.9-20121203.jar;」

「c:\ poi-3.9 \ poi-ooxml-3.9-20121203.jar;」

「c:\ poi-3.9 \ poi-ooxml-schemas-3.9-20121203.jar;」

「C:\ poi-3.9 \ ooxml-lib \ dom4j-1.6.1.jar;」

「c:\ poi-3.9 \ ooxml-lib \ xmlbeans-2.3.0.jar;。;」

2

Linux

CLASSPATHのエクスポート= $ CLASSPATH:

/usr/share/poi-3.9/poi-3.9-20121203.tar:

/usr/share/poi-3.9/poi-ooxml-schemas-3.9-20121203.tar:

/usr/share/poi-3.9/poi-ooxml-3.9-20121203.tar:

/usr/share/poi-3.9/ooxml-lib/dom4j-1.6.1.tar:

/usr/share/poi-3.9/ooxml-lib/xmlbeans-2.3.0.tar

この章では、Javaプログラムを使用してExcelファイルを操作するために重要なApache POIAPIのいくつかのクラスとメソッドについて説明します。

ワークブック

これは、Excelワークブックを作成または維持するすべてのクラスのスーパーインターフェイスです。それはに属しますorg.apache.poi.ss.usermodelパッケージ。このインターフェースを実装する2つのクラスは次のとおりです。

  • HSSFWorkbook−このクラスには、MicrosoftExcelファイルを.xls形式で読み書きするためのメソッドがあります。MS-Officeバージョン97〜2003と互換性があります。

  • XSSFWorkbook−このクラスには、MicrosoftExcelおよびOpenOfficexmlファイルを.xlsまたは.xlsx形式で読み書きするためのメソッドがあります。MS-Officeバージョン2007以降と互換性があります。

HSSFWorkbook

それは下の高レベルのクラスです org.apache.poi.hssf.usermodelパッケージ。それは実装しますWorkbookインターフェイスであり、.xls形式のExcelファイルに使用されます。以下にリストされているのは、このクラスのメソッドとコンストラクターの一部です。

クラスコンストラクタ

シニア番号 コンストラクターと説明
1

HSSFWorkbook()

新しいHSSFWorkbookオブジェクトを最初から作成します。

2

HSSFWorkbook(DirectoryNode directory, boolean preserveNodes)

特定のディレクトリ内に新しいHSSFWworkbookオブジェクトを作成します。

3

HSSFWorkbook(DirectoryNode directory, POIFSFileSystem fs, boolean preserveNodes)

POIFSFileSystemオブジェクトとその中の特定のディレクトリを指定すると、指定されたブックを読み取るためのSSFWorkbookオブジェクトが作成されます。

4

HSSFWorkbook(java.io.InputStream s)

入力ストリームを使用して、新しいHSSFWorkbookオブジェクトを作成します。

5

HSSFWorkbook(java.io.InputStream s, boolean preserveNodes)

入力ストリームの周りにPOIファイルシステムを構築します。

6

HSSFWorkbook(POIFSFileSystem fs)

POIFSFileSystemオブジェクトを使用して新しいHSSFWorkbookオブジェクトを構築します。

7

HSSFWorkbook(POIFSFileSystem fs, boolean preserveNodes)

POIFSFileSystemオブジェクトを指定すると、指定されたブックを読み取るための新しいHSSFWorkbookオブジェクトが作成されます。

これらのコンストラクター内で頻繁に使用されるパラメーターは次のとおりです。

  • directory −処理元のPOIファイルシステムディレクトリです。

  • fs −ワークブックストリームを含むのはPOIファイルシステムです。

  • preservenodes−これは、マクロなどの他のノードを保持するかどうかを決定するオプションのパラメーターです。すべてのPOIFileSystemをメモリに格納するため(設定されている場合)、大量のメモリを消費します。

Note− HSSFWorkbookクラスには、いくつかのメソッドが含まれています。ただし、xls形式とのみ互換性があります。このチュートリアルでは、最新バージョンのExcelファイル形式に焦点を当てています。したがって、HSSFWorkbookのクラスメソッドはここにはリストされていません。これらのクラスメソッドが必要な場合は、POI-HSSFWorkbookクラスAPIを参照してください。https://poi.apache.org/apidocs/org/apache/poi/hssf/usermodel/HSSFWorkbook.html.

XSSFWorkbook

これは、高レベルと低レベルの両方のExcelファイル形式を表すために使用されるクラスです。それはに属しますorg.apache.xssf.usemodel パッケージ化して実装します Workbookインターフェース。以下にリストされているのは、このクラスのメソッドとコンストラクターです。

クラスコンストラクタ

シニア番号 コンストラクターと説明
1

XSSFWorkbook()

新しいXSSFworkbookオブジェクトを最初から作成します。

2

XSSFWorkbook(java.io.File file)

指定されたファイルからXSSFWorkbookオブジェクトを構築します。

3

XSSFWorkbook(java.io.InputStream is)

入力ストリーム全体をメモリにバッファリングし、そのOPCPackageオブジェクトを開くことにより、XSSFWorkbookオブジェクトを構築します。

4

XSSFWorkbook(java.lang.String path)

ファイルのフルパスを指定してXSSFWorkbookオブジェクトを作成します。

クラスメソッド

シニア番号 方法と説明
1

createSheet()

このブックのXSSFSheetを作成し、シートに追加して、高レベルの表現を返します。

2

createSheet(java.lang.String sheetname)

このワークブックの新しいシートを作成し、高レベルの表現を返します。

3

createFont()

新しいフォントを作成し、それをブックのフォントテーブルに追加します。

4

createCellStyle()

新しいXSSFCellStyleを作成し、それをブックのスタイルテーブルに追加します。

5

createFont()

新しいフォントを作成し、それをブックのフォントテーブルに追加します。

6

setPrintArea(int sheetIndex, int startColumn, int endColumn, int startRow,int endRow)

指定されたパラメータに従って、指定されたシートの印刷領域を設定します。

このクラスの残りのメソッドについては、次の場所にある完全なAPIドキュメントを参照してください。 https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFWorkbook.html. メソッドの完全なリストについては。

シート

シートは、 org.apache.poi.ss.usermodelパッケージであり、特定の名前で高レベルまたは低レベルのスプレッドシートを作成するすべてのクラスのスーパーインターフェイスです。最も一般的なタイプのスプレッドシートはワークシートで、セルのグリッドとして表されます。

HSSFシート

これは下のクラスです org.apache.poi.hssf.usermodelパッケージ。Excelスプレッドシートを作成でき、シートスタイルとシートデータをフォーマットできます。

クラスコンストラクタ

シニア番号 コンストラクターと説明
1

HSSFSheet(HSSFWorkbook workbook)

シートを最初から作成するためにHSSFWorkbookによって呼び出される新しいHSSFSheetを作成します。

2

HSSFSheet(HSSFWorkbook workbook, InternalSheet sheet)

指定されたシートオブジェクトを表すHSSFSheetを作成します。

XSSFシート

これは、Excelスプレッドシートの高レベルの表現を表すクラスです。下にありますorg.apache.poi.hssf.usermodel パッケージ。

クラスコンストラクタ

シニア番号 コンストラクターと説明
1

XSSFSheet()

新しいXSSFSheetを作成します-シートを最初から作成するためにXSSFWorkbookによって呼び出されます。

2

XSSFSheet(PackagePart part, PackageRelationship rel)

指定されたパッケージパーツと関係を表すXSSFSheetを作成します。

クラスメソッド

シニア番号 方法と説明
1

addMergedRegion(CellRangeAddress region)

セルのマージされた領域を追加します(したがって、これらのセルは1つを形成します)。

2

autoSizeColumn(int column)

内容に合わせて列幅を調整します。

3

iterator()

このメソッドは、foreachループを許可するrowIterator()のエイリアスです。

4

addHyperlink(XSSFHyperlink hyperlink)

このシートのハイパーリンクのコレクションにハイパーリンクを登録します

このクラスの残りのメソッドについては、次の場所にある完全なAPIを参照してください。 https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFSheet.html.

行

これは、 org.apache.poi.ss.usermodelパッケージ。スプレッドシートの行の高レベルの表現に使用されます。これは、POIライブラリの行を表すすべてのクラスのスーパーインターフェイスです。

XSSFRow

これは下のクラスです org.apache.poi.xssf.usermodelパッケージ。Rowインターフェースを実装しているため、スプレッドシートに行を作成できます。以下にリストされているのは、このクラスのメソッドとコンストラクターです。

クラスメソッド

シニア番号 方法と説明
1

createCell(int columnIndex)

行内に新しいセルを作成して返します。

2

setHeight(short height)

高さを短い単位で設定します。

このクラスの残りのメソッドについては、指定されたリンクをたどってください https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFRow.html

細胞

これは、 org.apache.poi.ss.usermodelパッケージ。これは、スプレッドシートの行のセルを表すすべてのクラスのスーパーインターフェイスです。

セルは、空白、数値、日付、エラーなどのさまざまな属性をとることができます。セルは、行に追加される前に独自の数値(0ベース)を持っている必要があります。

XSSFCell

これは下のクラスです org.apache.poi.xssf.usermodelパッケージ。Cellインターフェースを実装します。これは、スプレッドシートの行のセルの高レベルの表現です。

フィールドサマリー

以下にリストされているのは、XSSFCellクラスのいくつかのフィールドとその説明です。

シニア番号 セルの種類と説明
1

CELL_TYPE_BLANK

空白のセルを表します

2

CELL_TYPE_BOOLEAN

ブールセルを表します(trueまたはfalse)

3

CELL_TYPE_ERROR

セルのエラー値を表します

4

CELL_TYPE_FORMULA

セルの数式結果を表します

5

CELL_TYPE_NUMERIC

セルの数値データを表します

6

CELL_TYPE_STRING

セル上の文字列(テキスト)を表します

クラスメソッド

シニア番号 方法と説明
1

setCellStyle(CellStyle style)

セルのスタイルを設定します。

2

setCellType(int cellType)

セルのタイプ(数値、数式、または文字列)を設定します。

3

setCellValue(boolean value)

セルのブール値を設定します。

4

setCellValue(java.util.Calendar value)

セルの日付値を設定します。

5

setCellValue(double value)

セルの数値を設定します。

6

setCellValue(java.lang.String str)

セルの文字列値を設定します。

7

setHyperlink(Hyperlink hyperlink)

このセルにハイパーリンクを割り当てます。

このクラスの残りのメソッドとフィールドについては、次のリンクにアクセスしてください。 https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFCell.html

XSSFCellStyle

これは下のクラスです org.apache.poi.xssf.usermodelパッケージ。スプレッドシートのセル内のコンテンツの形式に関する可能な情報を提供します。また、その形式を変更するためのオプションも提供します。CellStyleインターフェースを実装します。

フィールドサマリー

次の表に、CellStyleインターフェイスから継承されるいくつかのフィールドを示します。

シニア番号 フィールドと説明
1

ALIGN_CENTER

セルの内容を中央揃えにします

2

ALIGN_CENTER_SELECTION

中央選択の水平方向の配置

3

ALIGN_FILL

コンテンツサイズに合わせたセル

4

ALIGN_JUSTIFY

セルの内容をその幅に合わせる

5

ALIGN_LEFT

セルの内容を左揃えにします

6

ALIGN_RIGHT

セルの内容を右揃え

7

BORDER_DASH_DOT

ダッシュとドットのセルスタイル

8

BORDER_DOTTED

点線のセルスタイル

9

BORDER_DASHED

破線の境界線のあるセルスタイル

10

BORDER_THICK

太いボーダーのセルスタイル

11

BORDER_THIN

細いボーダーのセルスタイル

12

VERTICAL_BOTTOM

セルの内容を垂直下に揃えます

13

VERTICAL_CENTER

セルの内容を垂直方向の中央に揃えます

15

VERTICAL_JUSTIFY

セルの内容を垂直方向に揃えて揃えます

16

VERTICAL_TOP

上揃え垂直配置

クラスコンストラクタ

シニア番号 コンストラクターと説明
1

XSSFCellStyle(int cellXfId, int cellStyleXfId, StylesTable stylesSource, ThemesTable theme)

付属のパーツからセルスタイルを作成します

2

XSSFCellStyle(StylesTable stylesSource)

空のセルスタイルを作成します

クラスメソッド

S.No 方法と説明
1

setAlignment(short align)

セルの水平方向の配置のタイプを設定します

2

setBorderBottom(short border)

セルの下の境界線の境界線のタイプを設定します

3

setBorderColor(XSSFCellBorder.BorderSide side, XSSFColor color)

選択した境界線の色を設定します

4

setBorderLeft(Short border)

セルの左側の境界線の種類を設定します

5

setBorderRight(short border)

セルの右側の境界線の種類を設定します

6

setBorderTop(short border)

セルの上部の境界線の種類を設定します

7

setFillBackgroundColor(XSSFColor color)

XSSFColor値として表される背景の塗りつぶし色を設定します。

8

setFillForegroundColor(XSSFColor color)

XSSFColor値として表される前景色の塗りつぶし色を設定します。

9

setFillPattern(short fp)

パターンおよび単色のセル塗りつぶしのセル塗りつぶし情報を指定します。

10

setFont(Font font)

このスタイルのフォントを設定します。

11

setRotation(short rotation)

セル内のテキストの回転角度を設定します。

12

setVerticalAlignment(short align)

セルの垂直方向の配置のタイプを設定します。

このクラスの残りのメソッドとフィールドについては、次のリンクを参照してください。 https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFCellStyle.html

HSSFColor

これは下のクラスです org.apache.poi.hssf.utilパッケージ。ネストされたクラスとしてさまざまな色を提供します。通常、これらのネストされたクラスは、独自のインデックスを使用して表されます。Colorインターフェースを実装しています。

ネストされたクラス

このクラスのネストされたクラスはすべて静的であり、各クラスにはインデックスがあります。これらのネストされたカラークラスは、セルの内容、境界線、前景、背景などのセルの書式設定に使用されます。以下にリストされているのは、ネストされたクラスの一部です。

シニア番号 クラス名(色)
1 HSSFColor.AQUA
2 HSSFColor.AUTOMATIC
3 HSSFColor.BLACK
4 HSSFColor.BLUE
5 HSSFColor.BRIGHT_GREEN
6 HSSFColor.BRIGHT_GRAY
7 HSSFColor.CORAL
8 HSSFColor.DARK_BLUE
9 HSSFColor.DARK_GREEN
10 HSSFColor.SKY_BLUE
11 HSSFColor.WHITE
12 HSSFColor.YELLOW

クラスメソッド

このクラスの1つのメソッドのみが重要であり、それはインデックス値を取得するために使用されます。

シニア番号 方法と説明
1

getIndex()

このメソッドは、ネストされたクラスのインデックス値を取得するために使用されます。

残りのメソッドとネストされたクラスについては、次のリンクを参照してください。 https://poi.apache.org/apidocs/org/apache/poi/hssf/util/HSSFColor.html

XSSFColor

これは下のクラスです org.apache.poi.xssf.usermodelパッケージ。スプレッドシートの色を表すために使用されます。Colorインターフェースを実装しています。以下にリストされているのは、そのメソッドとコンストラクターの一部です。

クラスコンストラクタ

シニア番号 コンストラクターと説明
1

XSSFColor()

XSSFColorの新しいインスタンスを作成します。

2

XSSFColor(byte[] rgb)

RGBを使用してXSSFColorの新しいインスタンスを作成します。

3

XSSFColor(java.awt.Color clr)

awtパッケージのColorクラスを使用して、XSSFColorの新しいインスタンスを作成します。

クラスメソッド

シニア番号 方法と説明
1

setAuto(boolean auto)

ブール値を設定して、ctColorが自動であり、システムのctColorが依存していることを示します。

2

setIndexed(int indexed)

インデックス付きのctColor値をシステムctColorとして設定します。

残りの方法については、次のリンクにアクセスしてください。 https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFColor.html

XSSFFont

これは下のクラスです org.apache.poi.xssf.usermodelパッケージ。フォントインターフェイスを実装しているため、ブック内のさまざまなフォントを処理できます。

クラスコンストラクタ

シニア番号 コンストラクターと説明
1

XSSFFont()

新しいXSSFontインスタンスを作成します。

クラスメソッド

シニア番号 方法と説明
1

setBold(boolean bold)

'bold'属性にブール値を設定します。

2

setColor(short color)

フォントのインデックスカラーを設定します。

3

setColor(XSSFColor color)

フォントの色を標準アルファRGBカラー値で設定します。

4

setFontHeight(short height)

フォントの高さをポイントで設定します。

5

setFontName(java.lang.String name)

フォントの名前を設定します。

6

setItalic(boolean italic)

'italic'プロパティにブール値を設定します。

残りの方法については、次のリンクを参照してください。 https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFFont.html

XSSFハイパーリンク

これは下のクラスです org.apache.poi.xssf.usermodelパッケージ。ハイパーリンクインターフェイスを実装します。スプレッドシートのセルコンテンツへのハイパーリンクを設定するために使用されます。

田畑

このクラスのフィールドは次のとおりです。ここで、フィールドは使用されるハイパーリンクのタイプを意味します。

シニア番号 フィールドと説明
1

LINK_DOCUMENT

他のドキュメントをリンクするために使用されます

2

LINK_EMAIL

メールのリンクに使用

3

LINK_FILE

他のファイルを任意の形式でリンクするために使用されます

4

LINK_URL

WebURLをリンクするために使用されます

クラスメソッド

シニア番号 方法と説明
1

setAddress(java.lang.String address)

ハイパーリンクアドレス。

残りの方法については、次のリンクにアクセスしてください。 https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFHyperlink.html

XSSFCreationHelper

これは下のクラスです org.apache.poi.xssf.usermodelパッケージ。これは、CreationHelperインターフェイスを実装します。これは、数式の評価とハイパーリンクの設定のサポートクラスとして使用されます。

クラスメソッド

シニア番号 方法と説明
1

createFormulaEvaluator()

数式セルを評価するオブジェクトであるXSSFFormulaEvaluatorインスタンスを作成します。

2

createHyperlink(int type)

新しいXSSFHyperlinkを作成します。

残りの方法については、次のリンクを参照してください。 https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFCreationHelper.html

XSSFPrintSetup

これは下のクラスです org.apache.poi.xsssf.usermodelパッケージ。それは実装しますPrintSetupインターフェース。印刷ページのサイズ、面積、オプション、および設定を設定するために使用されます。

クラスメソッド

シニア番号 方法と説明
1

setLandscape(boolean ls)

横向き印刷を許可またはブロックするブール値を設定します。

2

setLeftToRight(boolean ltor)

印刷中に左から右に移動するか、上から下に移動するかを設定します。

3

setPaperSize(short size)

用紙サイズを設定します。

残りの方法については、次のリンクにアクセスしてください。 https://poi.apache.org/apidocs/org/apache/poi/hssf/usermodel/HSSFPrintSetup.html

ここで、「ワークブック」という用語はMicrosoftExcelファイルを意味します。この章を完了すると、Javaプログラムを使用して、新しいワークブックを作成し、既存のワークブックを開くことができるようになります。

空白のワークブックを作成する

次の簡単なプログラムを使用して、空白のMicrosoftExcelワークブックを作成します。

import java.io.*;
import org.apache.poi.xssf.usermodel.*;

public class CreateWorkBook {
   public static void main(String[] args)throws Exception {
      //Create Blank workbook
      XSSFWorkbook workbook = new XSSFWorkbook(); 

      //Create file system using specific name
      FileOutputStream out = new FileOutputStream(new File("createworkbook.xlsx"));

      //write operation workbook using file out object 
      workbook.write(out);
      out.close();
      System.out.println("createworkbook.xlsx written successfully");
   }
}

上記のJavaコードを次のように保存しましょう CreateWorkBook.java、次に、次のようにコマンドプロンプトからコンパイルして実行します。

$javac CreateWorkBook.java $java CreateWorkBook

システム環境がPOIライブラリで構成されている場合、POIライブラリはコンパイルおよび実行され、次の名前の空のExcelファイルが生成されます。 createworkbook.xlsx 現在のディレクトリで、コマンドプロンプトに次の出力を表示します。

createworkbook.xlsx written successfully

既存のブックを開く

次のコードを使用して、既存のブックを開きます。

import java.io.*;
import org.apache.poi.xssf.usermodel.*;

public class OpenWorkBook {
   public static void main(String args[])throws Exception { 
      File file = new File("openworkbook.xlsx");
      FileInputStream fIP = new FileInputStream(file);
      
      //Get the workbook instance for XLSX file 
      XSSFWorkbook workbook = new XSSFWorkbook(fIP);
      
      if(file.isFile() && file.exists()) {
         System.out.println("openworkbook.xlsx file open successfully.");
      } else {
         System.out.println("Error to open openworkbook.xlsx file.");
      }
   }
}

上記のJavaコードを次のように保存します OpenWorkBook.java、次に、次のようにコマンドプロンプトからコンパイルして実行します。

$javac OpenWorkBook.java $java OpenWorkBook

コンパイルして実行し、次の出力を生成します。

openworkbook.xlsx file open successfully.

ブックを開いた後、ブックに対して読み取りおよび書き込み操作を実行できます。

この章では、スプレッドシートを作成し、Javaを使用して操作する方法について説明します。スプレッドシートはExcelファイルのページです。特定の名前の行と列が含まれています。

この章を完了すると、スプレッドシートを作成して読み取り操作を実行できるようになります。

スプレッドシートを作成する

まず、前の章で説明した参照クラスを使用してスプレッドシートを作成しましょう。前の章に従って、最初にワークブックを作成してから、次にシートを作成します。

次のコードスニペットは、スプレッドシートの作成に使用されます。

//Create Blank workbook
XSSFWorkbook workbook = new XSSFWorkbook();

//Create a blank spreadsheet
XSSFSheet spreadsheet = workbook.createSheet("Sheet Name");

スプレッドシートの行

スプレッドシートにはグリッドレイアウトがあります。行と列は特定の名前で識別されます。列はアルファベットで識別され、行は数字で識別されます。

次のコードスニペットは、行を作成するために使用されます。

XSSFRow row = spreadsheet.createRow((short)1);

スプレッドシートに書き込む

従業員データの例を考えてみましょう。ここでは、従業員データが表形式で示されています。

Emp ID Emp名 指定
Tp01 ゴパル 技術管理者
TP02 マニシャ 校正者
Tp03 マサン テクニカルライター
Tp04 サティッシュ テクニカルライター
Tp05 クリシュナ テクニカルライター

次のコードは、上記のデータをスプレッドシートに書き込むために使用されます。

import java.io.File;
import java.io.FileOutputStream;

import java.util.Map;
import java.util.Set;
import java.util.TreeMap;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class Writesheet {
   public static void main(String[] args) throws Exception {

      //Create blank workbook
      XSSFWorkbook workbook = new XSSFWorkbook(); 

      //Create a blank sheet
      XSSFSheet spreadsheet = workbook.createSheet(" Employee Info ");

      //Create row object
      XSSFRow row;

      //This data needs to be written (Object[])
      Map < String, Object[] > empinfo = 
      new TreeMap < String, Object[] >();
      empinfo.put( "1", new Object[] { "EMP ID", "EMP NAME", "DESIGNATION" });
      empinfo.put( "2", new Object[] { "tp01", "Gopal", "Technical Manager" });
      empinfo.put( "3", new Object[] { "tp02", "Manisha", "Proof Reader" });
      empinfo.put( "4", new Object[] { "tp03", "Masthan", "Technical Writer" });
      empinfo.put( "5", new Object[] { "tp04", "Satish", "Technical Writer" });
      empinfo.put( "6", new Object[] { "tp05", "Krishna", "Technical Writer" });
      
      //Iterate over data and write to sheet
      Set < String > keyid = empinfo.keySet();
      int rowid = 0;

      for (String key : keyid) {
         row = spreadsheet.createRow(rowid++);
         Object [] objectArr = empinfo.get(key);
         int cellid = 0;

         for (Object obj : objectArr) {
            Cell cell = row.createCell(cellid++);
            cell.setCellValue((String)obj);
         }
      }

      //Write the workbook in file system
      FileOutputStream out = new FileOutputStream(new File("Writesheet.xlsx"));
      workbook.write(out);
      out.close();
      System.out.println("Writesheet.xlsx written successfully");
   }
}

上記のJavaコードを次のように保存します Writesheet.java、次に、次のようにコマンドプロンプトからコンパイルして実行します-

$javac Writesheet.java $java Writesheet

コンパイルして実行し、という名前のExcelファイルを生成します Writesheet.xlsx 現在のディレクトリにあると、コマンドプロンプトに次の出力が表示されます。

Writesheet.xlsx written successfully

ザ・ Writesheet.xlsx ファイルは次のようになります。

スプレッドシートから読む

上記のExcelファイルという名前のファイルを考えてみましょう Writesheet.xslx入力として。次のコードを確認してください。スプレッドシートからデータを読み取るために使用されます。

import java.io.File;
import java.io.FileInputStream;

import java.util.Iterator;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class Readsheet {
   static XSSFRow row;
   public static void main(String[] args) throws Exception {
      FileInputStream fis = new FileInputStream(new File("WriteSheet.xlsx"));
      
      XSSFWorkbook workbook = new XSSFWorkbook(fis);
      XSSFSheet spreadsheet = workbook.getSheetAt(0);
      Iterator < Row >  rowIterator = spreadsheet.iterator();
      
      while (rowIterator.hasNext()) {
         row = (XSSFRow) rowIterator.next();
         Iterator < Cell >  cellIterator = row.cellIterator();
         
         while ( cellIterator.hasNext()) {
            Cell cell = cellIterator.next();
            
            switch (cell.getCellType()) {
               case Cell.CELL_TYPE_NUMERIC:
                  System.out.print(cell.getNumericCellValue() + " \t\t ");
                  break;
               
               case Cell.CELL_TYPE_STRING:
                  System.out.print(
                  cell.getStringCellValue() + " \t\t ");
                  break;
            }
         }
         System.out.println();
      }
      fis.close();
   }
}

上記のコードを保持しましょう Readsheet.java ファイルを作成し、次のようにコマンドプロンプトからコンパイルして実行します-

$javac Readsheet.java $java Readsheet

システム環境がPOIライブラリで構成されている場合、POIライブラリはコンパイルおよび実行され、コマンドプロンプトで次の出力を生成します。

EMP ID   EMP NAME       DESIGNATION 
 tp01     Gopal       Technical Manager 
 tp02     Manisha     Proof Reader 
 tp03     Masthan     Technical Writer 
 tp04     Satish      Technical Writer 
 tp05     Krishna     Technical Writer

スプレッドシートに入力したデータは常にセルに保存されます。行と列のラベルを使用してセルを識別します。この章では、Javaプログラミングを使用してスプレッドシートのセル内のデータを操作する方法について説明します。

セルを作成する

セルを作成する前に行を作成する必要があります。行はセルのコレクションに他なりません。

次のコードスニペットは、セルの作成に使用されます。

//create new workbook
XSSFWorkbook workbook = new XSSFWorkbook(); 

//create spreadsheet with a name
XSSFSheet spreadsheet = workbook.createSheet("new sheet");

//create first row on a created spreadsheet
XSSFRow row = spreadsheet.createRow(0);

//create first cell on created row
XSSFCell cell = row.createCell(0);

細胞の種類

セルタイプは、セルに文字列、数値、または数式を含めることができるかどうかを指定します。文字列セルは数値を保持できず、数値セルは文字列を保持できません。以下に、セルのタイプ、それらの値、およびタイプ構文を示します。

セル値のタイプ タイプ構文
空白のセル値 XSSFCell.CELL_TYPE_BLANK
ブールセル値 XSSFCell.CELL.TYPE_BOOLEAN
エラーセル値 XSSFCell.CELL_TYPE_ERROR
数値セル値 XSSFCell.CELL_TYPE_NUMERIC
文字列セル値 XSSFCell.CELL_TYPE_STRING

次のコードは、スプレッドシートにさまざまな種類のセルを作成するために使用されます。

import java.io.File;
import java.io.FileOutputStream;

import java.util.Date;

import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class TypesofCells {
   public static void main(String[] args)throws Exception {
      XSSFWorkbook workbook = new XSSFWorkbook(); 
      XSSFSheet spreadsheet = workbook.createSheet("cell types");
      
      XSSFRow row = spreadsheet.createRow((short) 2);
      row.createCell(0).setCellValue("Type of Cell");
      row.createCell(1).setCellValue("cell value");
      
      row = spreadsheet.createRow((short) 3);
      row.createCell(0).setCellValue("set cell type BLANK");
      row.createCell(1);
      
      row = spreadsheet.createRow((short) 4);
      row.createCell(0).setCellValue("set cell type BOOLEAN");
      row.createCell(1).setCellValue(true);
      
      row = spreadsheet.createRow((short) 5);
      row.createCell(0).setCellValue("set cell type ERROR");
      row.createCell(1).setCellValue(XSSFCell.CELL_TYPE_ERROR );
      
      row = spreadsheet.createRow((short) 6);
      row.createCell(0).setCellValue("set cell type date");
      row.createCell(1).setCellValue(new Date());
      
      row = spreadsheet.createRow((short) 7);
      row.createCell(0).setCellValue("set cell type numeric");
      row.createCell(1).setCellValue(20 );
      
      row = spreadsheet.createRow((short) 8);
      row.createCell(0).setCellValue("set cell type string");
      row.createCell(1).setCellValue("A String");
      
      FileOutputStream out = new FileOutputStream(new File("typesofcells.xlsx"));
      workbook.write(out);
      out.close();
      System.out.println("typesofcells.xlsx written successfully");
   }
}

上記のコードをという名前のファイルに保存します TypesofCells.java、次のようにコマンドプロンプトからコンパイルして実行します。

$javac TypesofCells.java $java TypesofCells

システムがPOIライブラリで構成されている場合、システムはコンパイルおよび実行されて、という名前のExcelファイルが生成されます。 typesofcells.xlsx 現在のディレクトリに移動し、次の出力を表示します。

typesofcells.xlsx written successfully

ザ・ typesofcells.xlsx ファイルは次のようになります。

セルスタイル

ここでは、セルの書式設定を行い、隣接するセルの結合、境界線の追加、セルの配置の設定、色の塗りつぶしなど、さまざまなスタイルを適用する方法を学習できます。

次のコードは、Javaプログラミングを使用してセルにさまざまなスタイルを適用するために使用されます。

import java.io.File;
import java.io.FileOutputStream;

import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class CellStyle {
   public static void main(String[] args)throws Exception {
      XSSFWorkbook workbook = new XSSFWorkbook(); 
      XSSFSheet spreadsheet = workbook.createSheet("cellstyle");
      XSSFRow row = spreadsheet.createRow((short) 1);
      row.setHeight((short) 800);
      XSSFCell cell = (XSSFCell) row.createCell((short) 1);
      cell.setCellValue("test of merging");

      //MEARGING CELLS 
      //this statement for merging cells

      spreadsheet.addMergedRegion(
         new CellRangeAddress(
            1, //first row (0-based)
            1, //last row (0-based)
            1, //first column (0-based)
            4 //last column (0-based)
         )
      );
      
      //CELL Alignment
      row = spreadsheet.createRow(5); 
      cell = (XSSFCell) row.createCell(0);
      row.setHeight((short) 800);
      
      // Top Left alignment 
      XSSFCellStyle style1 = workbook.createCellStyle();
      spreadsheet.setColumnWidth(0, 8000);
      style1.setAlignment(XSSFCellStyle.ALIGN_LEFT);
      style1.setVerticalAlignment(XSSFCellStyle.VERTICAL_TOP);
      cell.setCellValue("Top Left");
      cell.setCellStyle(style1);
      row = spreadsheet.createRow(6); 
      cell = (XSSFCell) row.createCell(1);
      row.setHeight((short) 800);
      
      // Center Align Cell Contents 
      XSSFCellStyle style2 = workbook.createCellStyle();
      style2.setAlignment(XSSFCellStyle.ALIGN_CENTER);
      style2.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);
      cell.setCellValue("Center Aligned"); 
      cell.setCellStyle(style2);
      row = spreadsheet.createRow(7); 
      cell = (XSSFCell) row.createCell(2);
      row.setHeight((short) 800);
      
      // Bottom Right alignment 
      XSSFCellStyle style3 = workbook.createCellStyle();
      style3.setAlignment(XSSFCellStyle.ALIGN_RIGHT);
      style3.setVerticalAlignment(XSSFCellStyle.VERTICAL_BOTTOM);
      cell.setCellValue("Bottom Right");
      cell.setCellStyle(style3);
      row = spreadsheet.createRow(8);
      cell = (XSSFCell) row.createCell(3);
      
      // Justified Alignment 
      XSSFCellStyle style4 = workbook.createCellStyle();
      style4.setAlignment(XSSFCellStyle.ALIGN_JUSTIFY);
      style4.setVerticalAlignment(XSSFCellStyle.VERTICAL_JUSTIFY);
      cell.setCellValue("Contents are Justified in Alignment"); 
      cell.setCellStyle(style4);
      
      //CELL BORDER
      row = spreadsheet.createRow((short) 10);
      row.setHeight((short) 800);
      cell = (XSSFCell) row.createCell((short) 1);
      cell.setCellValue("BORDER");
      
      XSSFCellStyle style5 = workbook.createCellStyle();
      style5.setBorderBottom(XSSFCellStyle.BORDER_THICK);
      style5.setBottomBorderColor(IndexedColors.BLUE.getIndex());
      style5.setBorderLeft(XSSFCellStyle.BORDER_DOUBLE);
      style5.setLeftBorderColor(IndexedColors.GREEN.getIndex());
      style5.setBorderRight(XSSFCellStyle.BORDER_HAIR);
      style5.setRightBorderColor(IndexedColors.RED.getIndex());
      style5.setBorderTop(XSSFCellStyle.BIG_SPOTS);
      style5.setTopBorderColor(IndexedColors.CORAL.getIndex());
      cell.setCellStyle(style5);
      
      //Fill Colors
      //background color
      row = spreadsheet.createRow((short) 10 );
      cell = (XSSFCell) row.createCell((short) 1);
      
      XSSFCellStyle style6 = workbook.createCellStyle();
      style6.setFillBackgroundColor(HSSFColor.LEMON_CHIFFON.index );
      style6.setFillPattern(XSSFCellStyle.LESS_DOTS);
      style6.setAlignment(XSSFCellStyle.ALIGN_FILL);
      spreadsheet.setColumnWidth(1,8000);
      cell.setCellValue("FILL BACKGROUNG/FILL PATTERN");
      cell.setCellStyle(style6);
      
      //Foreground color
      row = spreadsheet.createRow((short) 12);
      cell = (XSSFCell) row.createCell((short) 1);
      
      XSSFCellStyle style7 = workbook.createCellStyle();
      style7.setFillForegroundColor(HSSFColor.BLUE.index);
      style7.setFillPattern( XSSFCellStyle.LESS_DOTS);
      style7.setAlignment(XSSFCellStyle.ALIGN_FILL);
      cell.setCellValue("FILL FOREGROUND/FILL PATTERN");
      cell.setCellStyle(style7);

      FileOutputStream out = new FileOutputStream(new File("cellstyle.xlsx"));
      workbook.write(out);
      out.close();
      System.out.println("cellstyle.xlsx written successfully");
   }
}

上記のコードをという名前のファイルに保存します CellStyle.java、次のようにコマンドプロンプトからコンパイルして実行します。

$javac CellStyle.java $java CellStyle

名前の付いたExcelファイルを生成します cellstyle.xlsx 現在のディレクトリに移動し、次の出力を表示します。

cellstyle.xlsx written successfully

cellstyle.xlsxファイルは次のようになります。

この章では、Excelスプレッドシートでさまざまなフォントを設定し、スタイルを適用し、さまざまな方向の角度でテキストを表示する方法について説明します。

すべてのシステムには、Arial、Impact、Times New Romanなどの膨大なフォントのコレクションがバンドルされています。コレクションは、必要に応じて新しいフォントで更新することもできます。同様に、フォントを表示できるさまざまなスタイルがあります。たとえば、太字、斜体、下線、取り消し線などです。

フォントとフォントスタイル

次のコードは、特定のフォントとスタイルをセルのコンテンツに適用するために使用されます。

import java.io.File;
import java.io.FileOutputStream;

import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFFont;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class FontStyle {
   public static void main(String[] args)throws Exception {
      XSSFWorkbook workbook = new XSSFWorkbook(); 
      XSSFSheet spreadsheet = workbook.createSheet("Fontstyle");
      XSSFRow row = spreadsheet.createRow(2);

      //Create a new font and alter it.
      XSSFFont font = workbook.createFont();
      font.setFontHeightInPoints((short) 30);
      font.setFontName("IMPACT");
      font.setItalic(true);
      font.setColor(HSSFColor.BRIGHT_GREEN.index);

      //Set font into style
      XSSFCellStyle style = workbook.createCellStyle();
      style.setFont(font);

      // Create a cell with a value and set style to it.
      XSSFCell cell = row.createCell(1);
      cell.setCellValue("Font Style");
      cell.setCellStyle(style);
      
      FileOutputStream out = new FileOutputStream(new File("fontstyle.xlsx"));
      workbook.write(out);
      out.close();
      System.out.println("fontstyle.xlsx written successfully");
   }
}

上記のコードをという名前のファイルに保存しましょう FontStyle.java。次のようにコマンドプロンプトからコンパイルして実行します。

$javac FontStyle.java $java FontStyle

名前の付いたExcelファイルを生成します fontstyle.xlsx 現在のディレクトリで、コマンドプロンプトに次の出力を表示します。

fontstyle.xlsx written successfully

ザ・ fontstyle.xlsx ファイルは次のようになります。

テキストの方向

ここでは、テキストの方向をさまざまな角度で設定する方法を学ぶことができます。通常、セルの内容は水平方向、左から右、00度の角度で表示されます。ただし、必要に応じて、次のコードを使用してテキストの方向を回転させることができます。

import java.io.File;
import java.io.FileOutputStream;

import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class TextDirection {
   public static void main(String[] args)throws Exception {
      XSSFWorkbook workbook = new XSSFWorkbook(); 
      XSSFSheet spreadsheet = workbook.createSheet("Text direction");
      XSSFRow row = spreadsheet.createRow(2);
      XSSFCellStyle myStyle = workbook.createCellStyle();
      myStyle.setRotation((short) 0);
      XSSFCell cell = row.createCell(1);
      cell.setCellValue("0D angle");
      cell.setCellStyle(myStyle);

      //30 degrees
      myStyle = workbook.createCellStyle();
      myStyle.setRotation((short) 30);
      cell = row.createCell(3);
      cell.setCellValue("30D angle");
      cell.setCellStyle(myStyle);

      //90 degrees
      myStyle = workbook.createCellStyle();
      myStyle.setRotation((short) 90);
      cell = row.createCell(5);
      cell.setCellValue("90D angle");
      cell.setCellStyle(myStyle);

      //120 degrees
      myStyle = workbook.createCellStyle();
      myStyle.setRotation((short) 120);
      cell = row.createCell(7);
      cell.setCellValue("120D angle");
      cell.setCellStyle(myStyle);

      //270 degrees
      myStyle = workbook.createCellStyle();
      myStyle.setRotation((short) 270);
      cell = row.createCell(9);
      cell.setCellValue("270D angle");
      cell.setCellStyle(myStyle);

      //360 degrees
      myStyle = workbook.createCellStyle();
      myStyle.setRotation((short) 360);
      cell = row.createCell(12);
      cell.setCellValue("360D angle");
      cell.setCellStyle(myStyle);
      
      FileOutputStream out = new FileOutputStream(new File("textdirection.xlsx"));
      workbook.write(out);
      out.close();
      System.out.println("textdirection.xlsx written successfully");
   }
}

上記のコードを TextDirectin.java ファイルを作成し、次のようにコマンドプロンプトからコンパイルして実行します。

$javac TextDirection.java $java TextDirection

コンパイルして実行し、という名前のExcelファイルを生成します textdirection.xlsx 現在のディレクトリで、コマンドプロンプトに次の出力を表示します。

textdirection.xlsx written successfully

ザ・ textdirection.xlsx ファイルは次のようになります。

この章では、Javaプログラミングを使用してセルにさまざまな数式を適用するプロセスについて説明します。Excelアプリケーションの基本的な目的は、数式を適用して数値データを維持することです。

数式では、動的な値または値の場所をExcelシートに渡します。この式を実行すると、目的の結果が得られます。次の表に、Excelで頻繁に使用されるいくつかの基本的な数式を示します。

操作 構文
複数の数字を追加する = SUM(Loc1:Locn) or = SUM(n1、n2、)
カウント = COUNT(Loc1:Locn) or = COUNT(n1、n2、)
2つの数の力 = POWER(Loc1、Loc2) or = POWER(数値、電力)
複数の数の最大 = MAX(Loc1:Locn) or = MAX(n1、n2、)
製品 = PRODUCT(Loc1:Locn) or = PRODUCT(n1、n2、)
階乗 = FACT(Locn) or = FACT(数値)
絶対数 = ABS(Locn) or = ABS(数値)
今日の日付 = TODAY()
小文字に変換します = LOWER(Locn) or = LOWER(テキスト)
平方根 = SQRT(locn) or = SQRT(数値)

次のコードは、セルに数式を追加して実行するために使用されます。

import java.io.File;
import java.io.FileOutputStream;

import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class Formula {
   public static void main(String[] args)throws Exception {
      XSSFWorkbook workbook = new XSSFWorkbook(); 
      XSSFSheet spreadsheet = workbook.createSheet("formula");
      XSSFRow row = spreadsheet.createRow(1);
      XSSFCell cell = row.createCell(1);
      
      cell.setCellValue("A = ");
      cell = row.createCell(2);
      cell.setCellValue(2);
      row = spreadsheet.createRow(2);
      cell = row.createCell(1);
      cell.setCellValue("B = ");
      cell = row.createCell(2);
      cell.setCellValue(4);
      row = spreadsheet.createRow(3);
      cell = row.createCell(1);
      cell.setCellValue("Total = ");
      cell = row.createCell(2);
      
      // Create SUM formula
      cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);
      cell.setCellFormula("SUM(C2:C3)");
      cell = row.createCell(3);
      cell.setCellValue("SUM(C2:C3)");
      row = spreadsheet.createRow(4);
      cell = row.createCell(1);
      cell.setCellValue("POWER =");
      cell=row.createCell(2);
      
      // Create POWER formula
      cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);
      cell.setCellFormula("POWER(C2,C3)");
      cell = row.createCell(3);
      cell.setCellValue("POWER(C2,C3)");
      row = spreadsheet.createRow(5);
      cell = row.createCell(1);
      cell.setCellValue("MAX = ");
      cell = row.createCell(2);
      
      // Create MAX formula
      cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);
      cell.setCellFormula("MAX(C2,C3)");
      cell = row.createCell(3);
      cell.setCellValue("MAX(C2,C3)");
      row = spreadsheet.createRow(6);
      cell = row.createCell(1);
      cell.setCellValue("FACT = ");
      cell = row.createCell(2);
      
      // Create FACT formula
      cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);
      cell.setCellFormula("FACT(C3)");
      cell = row.createCell(3);
      cell.setCellValue("FACT(C3)");
      row = spreadsheet.createRow(7);
      cell = row.createCell(1);
      cell.setCellValue("SQRT = ");
      cell = row.createCell(2);
      
      // Create SQRT formula
      cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);
      cell.setCellFormula("SQRT(C5)");
      cell = row.createCell(3);
      cell.setCellValue("SQRT(C5)");
      workbook.getCreationHelper().createFormulaEvaluator().evaluateAll();
      FileOutputStream out = new FileOutputStream(new File("formula.xlsx"));
      workbook.write(out);
      out.close();
      System.out.println("fromula.xlsx written successfully");
   }
}

上記のコードを次のように保存します Formula.java 次に、次のようにコマンドプロンプトからコンパイルして実行します。

$javac Formula.java $java Formula

名前の付いたExcelファイルを生成します formula.xlsx 現在のディレクトリで、コマンドプロンプトに次の出力を表示します。

fromula.xlsx written successfully

ザ・ formula.xlsx ファイルは次のようになります。

この章では、セルのコンテンツにハイパーリンクを追加する方法について説明します。通常、ハイパーリンクは、Web URL、電子メール、または外部ファイルにアクセスするために使用されます。

次のコードは、セルにハイパーリンクを作成する方法を示しています。

import java.io.File;
import java.io.FileOutputStream;

import org.apache.poi.common.usermodel.Hyperlink;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.CreationHelper;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFFont;
import org.apache.poi.xssf.usermodel.XSSFHyperlink;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class HyperlinkEX {
   public static void main(String[] args) throws Exception {
      XSSFWorkbook workbook = new XSSFWorkbook(); 
      XSSFSheet spreadsheet = workbook.createSheet("Hyperlinks");
      XSSFCell cell;
      CreationHelper createHelper = workbook.getCreationHelper();
      XSSFCellStyle hlinkstyle = workbook.createCellStyle();
      XSSFFont hlinkfont = workbook.createFont();
      hlinkfont.setUnderline(XSSFFont.U_SINGLE);
      hlinkfont.setColor(HSSFColor.BLUE.index);
      hlinkstyle.setFont(hlinkfont);

      //URL Link
      cell = spreadsheet.createRow(1).createCell((short) 1);
      cell.setCellValue("URL Link");
      XSSFHyperlink link = (XSSFHyperlink)createHelper.createHyperlink(Hyperlink.LINK_URL);
      link.setAddress("http://www.tutorialspoint.com/");
      cell.setHyperlink((XSSFHyperlink) link);
      cell.setCellStyle(hlinkstyle);

      //Hyperlink to a file in the current directory
      cell = spreadsheet.createRow(2).createCell((short) 1);
      cell.setCellValue("File Link");
      link = (XSSFHyperlink)createHelper.createHyperlink(Hyperlink.LINK_FILE);
      link.setAddress("cellstyle.xlsx");
      cell.setHyperlink(link);
      cell.setCellStyle(hlinkstyle);

      //e-mail link
      cell = spreadsheet.createRow(3).createCell((short) 1);
      cell.setCellValue("Email Link");
      link = (XSSFHyperlink)createHelper.createHyperlink(Hyperlink.LINK_EMAIL);
      link.setAddress("mailto:[email protected]?" + "subject = Hyperlink");
      cell.setHyperlink(link);
      cell.setCellStyle(hlinkstyle);
      
      FileOutputStream out = new FileOutputStream(new File("hyperlink.xlsx"));
      workbook.write(out);
      out.close();
      System.out.println("hyperlink.xlsx written successfully");
   }
}

上記のコードを次のように保存します HyperlinkEX.java。次のようにコマンドプロンプトからコンパイルして実行します。

$javac HyperlinkEX.java $java HyperlinkEX

名前の付いたExcelファイルを生成します hyperlink.xlsx 現在のディレクトリで、コマンドプロンプトに次の出力を表示します。

hyperlink.xlsx written successfully

ザ・ hyperlink.xlsx ファイルは次のようになります。

この章では、スプレッドシートの印刷領域を設定する方法について説明します。通常の印刷領域は、Excelスプレッドシートの左上から右下です。印刷領域は、要件に応じてカスタマイズできます。これは、スプレッドシート全体から特定の範囲のセルを印刷したり、用紙サイズをカスタマイズしたり、グリッド線をオンにしてコンテンツを印刷したりできることを意味します。

次のコードは、スプレッドシートの印刷領域を設定するために使用されます。

import java.io.File;
import java.io.FileOutputStream;

import org.apache.poi.xssf.usermodel.XSSFPrintSetup;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class PrintArea {
   public static void main(String[] args)throws Exception {
      XSSFWorkbook workbook = new XSSFWorkbook(); 
      XSSFSheet spreadsheet = workbook.createSheet("Print Area");

      //set print area with indexes
      workbook.setPrintArea(
         0, //sheet index
         0, //start column
         5, //end column
         0, //start row
         5 //end row
      );
      
      //set paper size
      spreadsheet.getPrintSetup().setPaperSize(XSSFPrintSetup.A4_PAPERSIZE);
      
      //set display grid lines or not
      spreadsheet.setDisplayGridlines(true);
      
      //set print grid lines or not
      spreadsheet.setPrintGridlines(true);
      
      FileOutputStream out = new FileOutputStream(new File("printarea.xlsx"));
      workbook.write(out);
      out.close();
      System.out.println("printarea.xlsx written successfully"); 
   }
}

上記のコードを次のように保存しましょう PrintArea.java。次のようにコマンドプロンプトからコンパイルして実行します。

$javac PrintArea.java $java PrintArea

名前の付いたファイルを生成します printarea.xlsx 現在のディレクトリで、コマンドプロンプトに次の出力を表示します。

printarea.xlsx written successfully

上記のコードでは、セル値を追加していません。したがって、printarea.xlsx空白のファイルです。ただし、次の図では、印刷プレビューにグリッド線のある印刷領域が表示されていることがわかります。

この章では、POIライブラリがデータベースとどのように相互作用するかについて説明します。JDBCを使用すると、データベースからデータを取得し、POIライブラリを使用してそのデータをスプレッドシートに挿入できます。SQL操作用のMySQLデータベースについて考えてみましょう。

データベースからExcelに書き込む

次の従業員データテーブルを想定します。 emp_tbl MySQLデータベースから取得されます test。

EMP ID EMP名 度 給料 部門
1201 ゴパル 技術管理者 45000 それ
1202 マニシャ 校正者 45000 テスト
1203 マスタンバリ テクニカルライター 45000 それ
1204 キラン 人事管理者 40000 人事
1205 クランティ 運用管理者 30000 管理者

次のコードを使用して、データベースからデータを取得し、それをスプレッドシートに挿入します。

import java.io.File;
import java.io.FileOutputStream;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class ExcelDatabase {
   public static void main(String[] args) throws Exception {
      Class.forName("com.mysql.jdbc.Driver");
      Connection connect = DriverManager.getConnection( 
         "jdbc:mysql://localhost:3306/test" , 
         "root" , 
         "root"
      );
      
      Statement statement = connect.createStatement();
      ResultSet resultSet = statement.executeQuery("select * from emp_tbl");
      XSSFWorkbook workbook = new XSSFWorkbook(); 
      XSSFSheet spreadsheet = workbook.createSheet("employe db");
      
      XSSFRow row = spreadsheet.createRow(1);
      XSSFCell cell;
      cell = row.createCell(1);
      cell.setCellValue("EMP ID");
      cell = row.createCell(2);
      cell.setCellValue("EMP NAME");
      cell = row.createCell(3);
      cell.setCellValue("DEG");
      cell = row.createCell(4);
      cell.setCellValue("SALARY");
      cell = row.createCell(5);
      cell.setCellValue("DEPT");
      int i = 2;

      while(resultSet.next()) {
         row = spreadsheet.createRow(i);
         cell = row.createCell(1);
         cell.setCellValue(resultSet.getInt("eid"));
         cell = row.createCell(2);
         cell.setCellValue(resultSet.getString("ename"));
         cell = row.createCell(3);
         cell.setCellValue(resultSet.getString("deg"));
         cell = row.createCell(4);
         cell.setCellValue(resultSet.getString("salary"));
         cell = row.createCell(5);
         cell.setCellValue(resultSet.getString("dept"));
         i++;
      }

      FileOutputStream out = new FileOutputStream(new File("exceldatabase.xlsx"));
      workbook.write(out);
      out.close();
      System.out.println("exceldatabase.xlsx written successfully");
   }
}

上記のコードを次のように保存しましょう ExcelDatabase.java。次のようにコマンドプロンプトからコンパイルして実行します。

$javac ExcelDatabase.java $java ExcelDatabase

名前の付いたExcelファイルを生成します exceldatabase.xlsx 現在のディレクトリで、コマンドプロンプトに次の出力を表示します。

exceldatabase.xlsx written successfully

ザ・ exceldatabase.xlsx ファイルは次のようになります。