Apache-poi-quick-guide

提供:Dev Guides
移動先:案内検索

Apache POI-概要

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

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

Apache POIとは何ですか?

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

Apache POIのコンポーネント

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

  • POIFS (低難読化実装ファイルシステム)-このコンポーネントは、他のすべてのPOI要素の基本的な要素です。 異なるファイルを明示的に読み取るために使用されます。
  • HSSF (恐ろしいスプレッドシート形式)-MS-Excelファイルの xls 形式の読み取りおよび書き込みに使用されます。
  • XSSF (XMLスプレッドシート形式)-MS-Excelの xlsx ファイル形式に使用されます。
  • HPSF (恐ろしいプロパティセット形式)-MS-Officeファイルの*プロパティセット*​​を抽出するために使用されます。
  • HWPF (恐ろしいワープロ形式)-MS-Wordの doc 拡張ファイルの読み取りと書き込みに使用されます。
  • XWPF (XMLワープロ形式)-MS-Wordの docx 拡張ファイルを読み書きするために使用されます。
  • HSLF (恐ろしいスライドレイアウト形式)-PowerPointプレゼンテーションの読み取り、作成、および編集に使用されます。
  • HDGF (恐ろしいDiaGram形式)- MS-Visio バイナリファイルのクラスとメソッドが含まれています。
  • HPBF (恐ろしいPuBlisher形式)- MS-Publisher ファイルの読み取りと書き込みに使用されます。

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

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

Apache POIと同様に、Excelファイル生成用にさまざまなベンダーから提供されている他のライブラリがあります。 これらには、Asposeによる* Asposeセル*、Commons Librariesによる JXL 、およびTeam Devによる JExcel が含まれます。

Apache POI-Java Excel API

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

Aspose Cells for Java

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

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

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

JXL

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

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

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

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

JExcel

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

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

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

アパッチPOI

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

サークル

Apache POI-環境

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

システム要求

JDK Java SE 2 JDK 1.5 or above
Memory 1 GB RAM (recommended)
Disk Space No minimum requirement
Operating System Version Windows XP or above, Linux

Apache POIをインストールする手順に進みましょう。

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

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

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

Platform Command Sample Output
Windows

Open command console and type −

  • \> java –version*

a

Javaバージョン「1.7.0_60」

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

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

Linux

Open command terminal and type −

  • $ java –version*

a

Javaバージョン "1.7.0_25"

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

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

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

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

Sr.No. Platform & Description
1
  • Windows*

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

2

Linux

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

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

Sr.No. Platform & Description
1

Windows

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

2

Linux

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

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

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

[[1]] POIをダウンロードし、必要なライブラリをJavaプログラムにリンクできるフォルダにそのコンテンツを解凍します。 ファイルがCドライブのフォルダーに収集されると仮定します。

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

ジャー

ジャー

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

Sr.No. Platform & Description
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

Apache POI –コアクラス

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

ワークブック

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

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

HSSFWorkbook

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

クラスコンストラクター

Sr.No. Constructor & Description
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オブジェクトを作成して、指定されたワークブックを読み取ります。

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

  • ディレクトリ-処理元のPOIファイルシステムディレクトリです。
  • fs -ワークブックストリームを含むのはPOIファイルシステムです。
  • preservenodes -これは、マクロなどの他のノードを保持するかどうかを決定するオプションのパラメーターです。 POIFileSystemをすべてメモリに保存するため(設定されている場合)、大量のメモリを消費します。

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

XSSFWorkbook

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

クラスコンストラクター

Sr.No. Constructor & Description
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オブジェクトを構築します。

クラスメソッド

Sr.No. Method & Description
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)

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

このクラスの残りのメソッドについては、https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFWorkbookl [[[3]]]をご覧ください。

シート

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

HSSFSheet

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

クラスコンストラクター

Sr.No. Constructor & Description
1

HSSFSheet(HSSFWorkbook workbook)

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

2

HSSFSheet(HSSFWorkbook workbook, InternalSheet sheet)

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

XSSFSheet

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

クラスコンストラクター

Sr.No. Constructor & Description
1

XSSFSheet()

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

2

XSSFSheet(PackagePart part, PackageRelationship rel)

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

クラスメソッド

Sr.No. Method & Description
1

addMergedRegion(CellRangeAddress region)

セルの結合領域を追加します(したがって、これらのセルが1つを形成します)。

2

autoSizeColumn(int column)

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

3

iterator()

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

4

addHyperlink(XSSFHyperlink hyperlink)

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

このクラスの残りのメソッドについては、https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFSheetl [[[4]] org/apache/poi/xssf/usermodel/XSSFSheetl。]

Row

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

XSSFRow

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

クラスメソッド

Sr.No. Method & Description
1

createCell(int columnIndex)

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

2

setHeight(short height)

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

このクラスの残りのメソッドについては、所定のリンクhttps://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFRowlに従ってください。

Cell

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

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

XSSFCell

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

フィールドサマリー

以下に、XSSFCellクラスのフィールドの一部とその説明を示します。

Sr.No. Cell Type & Description
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

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

クラスメソッド

Sr.No. Method & Description
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/XSSFCelll

XSSFCellStyle

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

フィールドサマリー

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

Sr.No. Field & Description
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

上揃えの縦揃え

クラスコンストラクター

Sr.No. Constructor & Description
1

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

指定されたパーツからセルスタイルを作成します

2

XSSFCellStyle(StylesTable stylesSource)

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

クラスメソッド

S.No Method & Description
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/XSSFCellStylel

HSSFColor

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

入れ子クラス

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

Sr.No. Class names (colors)
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つのメソッドのみが重要であり、それはインデックス値を取得するために使用されます。

Sr.No. Method & Description
1

getIndex()

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

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

XSSFColor

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

クラスコンストラクター

Sr.No. Constructor & Description
1

XSSFColor()

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

2

XSSFColor(byte[] rgb)

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

3

XSSFColor(java.awt.Color clr)

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

クラスメソッド

Sr.No. Method & Description
1

setAuto(boolean auto)

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

2

setIndexed(int indexed)

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

残りのメソッドについては、次のリンクにアクセスしてください:https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFColorl

XSSFFont

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

クラスコンストラクター

Sr.No. Constructor & Description
1

XSSFFont()

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

クラスメソッド

Sr.No. Method & Description
1

setBold(boolean 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/XSSFFontl

XSSFHyperlink

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

フィールド

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

Sr.No. Field & Description
1

LINK_DOCUMENT

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

2

LINK_EMAIL

メールのリンクに使用

3

LINK_FILE

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

4

LINK_URL

Web URLのリンクに使用

クラスメソッド

Sr.No. Method & Description
1

setAddress(java.lang.String address)

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

残りのメソッドについては、次のリンクにアクセスしてください:https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFHyperlinkl

XSSFCreationHelper

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

クラスメソッド

Sr.No. Method & Description
1

createFormulaEvaluator()

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

2

createHyperlink(int type)

新しいXSSFHyperlinkを作成します。

残りのメソッドについては、次のリンクを参照してください。https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFCreationHelperl

XSSFPrintSetup

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

クラスメソッド

Sr.No. Method & Description
1

setLandscape(boolean ls)

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

2

setLeftToRight(boolean ltor)

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

3

setPaperSize(short size)

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

残りのメソッドについては、次のリンクにアクセスしてください。https://poi.apache.org/apidocs/org/apache/poi/hssf/usermodel/HSSFPrintSetupl

Apache POI –ワークブック

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

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

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

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ライブラリで構成されている場合、現在のディレクトリに createworkbook.xlsx という名前の空のExcelファイルが生成され、コマンドプロンプトに次の出力が表示されます。

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.

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

Apache POI –スプレッドシート

この章では、スプレッドシートを作成し、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 Name Designation
Tp01 Gopal Technical Manager
TP02 Manisha Proof Reader
Tp03 Masthan Technical Writer
Tp04 Satish Technical Writer
Tp05 Krishna Technical Writer

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

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

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

Writesheet.xlsx written successfully
*Writesheet.xlsx* ファイルは次のようになります。

ライトシート

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

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

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ライブラリで構成されている場合、コマンドプロンプトで次の出力を生成するためにコンパイルおよび実行されます。

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

Apache POI –セル

スプレッドシートに入力したデータは常にセルに保存されます。 行と列のラベルを使用してセルを識別します。 この章では、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);

細胞の種類

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

Type of cell value Type Syntax
Blank cell value XSSFCell.CELL_TYPE_BLANK
Boolean cell value XSSFCell.CELL.TYPE_BOOLEAN
Error cell value XSSFCell.CELL_TYPE_ERROR
Numeric cell value XSSFCell.CELL_TYPE_NUMERIC
String cell value 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ライブラリで構成されている場合、システムはコンパイルおよび実行され、 typesofcells.xlsx という名前のExcelファイルが現在のディレクトリに生成され、次の出力が表示されます。

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

現在のディレクトリに cellstyle.xlsx という名前のExcelファイルが生成され、次の出力が表示されます。

cellstyle.xlsx written successfully

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

CellStyle

Apache POI –フォント

この章では、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

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

fontstyle.xlsx written successfully
*fontstyle.xlsx* ファイルは次のようになります。

FontStyle

テキストの方向

ここでは、さまざまな角度でテキストの方向を設定する方法を学ぶことができます。 通常、セルの内容は水平に、左から右に、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

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

textdirection.xlsx written successfully
*textdirection.xlsx* ファイルは次のようになります。

TextDirectin

Apache POI –フォーミュラ

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

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

Operation Syntax
Adding multiple numbers = SUM(Loc1:Locn) *or *= SUM(n1,n2,)
Count = COUNT(Loc1:Locn)* or *= COUNT(n1,n2,)
Power of two numbers = POWER(Loc1,Loc2)* or *= POWER(number, power)
Max of multiple numbers = MAX(Loc1:Locn)* or *= MAX(n1,n2,)
Product = PRODUCT(Loc1:Locn)* or *= PRODUCT(n1,n2,)
Factorial = FACT(Locn)* or *= FACT(number)
Absolute number = ABS(Locn)* or *= ABS(number)
Today date =TODAY()
Converts lowercase = LOWER(Locn)* or *= LOWER(text)
Square root = SQRT(locn)* or* = SQRT(number)

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

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

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

fromula.xlsx written successfully
*formula.xlsx* ファイルは次のようになります。

Apache POI –ハイパーリンク

この章では、セル内のコンテンツにハイパーリンクを追加する方法について説明します。 通常、ハイパーリンクは、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.finddevguides.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

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

hyperlink.xlsx written successfully
*hyperlink.xlsx* ファイルは次のようになります。

ハイパーリンク

Apache POI –印刷エリア

この章では、スプレッドシートの印刷領域を設定する方法について説明します。 通常の印刷領域は、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 は空のファイルです。 ただし、次の図では、印刷プレビューに印刷領域がグリッド線で表示されていることがわかります。

PrintArea

Apache POI-データベース

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

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

*emp_tbl* という次の従業員データテーブルがMySQLデータベース *test* から取得されると仮定します。
EMP ID EMP NAME DEG SALARY DEPT
1201 Gopal Technical Manager 45000 IT
1202 Manisha Proof reader 45000 Testing
1203 Masthanvali Technical Writer 45000 IT
1204 Kiran Hr Admin 40000 HR
1205 Kranthi Op Admin 30000 Admin

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

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

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

exceldatabase.xlsx written successfully
*exceldatabase.xlsx* ファイルは次のようになります。

Excelデータベース Apache-poi-questions-answers