「Java Excel API(以下JXLと記述します)」は、JavaでMicrosoft Excelを扱うことのできる
オープンソースのライブラリです。
同様のライブラリとしてはApache POIが有名ですが、Wordなど複数のMicrosoft文書を
操作できるPOIとは異なり、こちらはExcelに特化したライブラリとなっています。
今回はExcel文書の読み込み機能に焦点を当て、利用するAPIを記述していきたいと思います。
( 2008/06/23 )
導入
こちらよりアーカイブをダウンロードします。
アーカイブ内のjxl.jarにCLASSPATH環境変数を設定すれば導入完了となります。
jxl.Workbookを使用します。
Excelファイルを読み込む。
java.io.Fileインスタンスから読み込む
java.io.InputStreamインスタンスから読み込む
Excelファイルの読み込みを終了する。
jxl.Workbookを使用します。
ワークブック内のシート数を確認する。
ワークブック内のシート名称を確認する。
内容を読み込むためにシートのインスタンスを取得する。
※ シートの操作は こちらを参照してください。
登録された名前定義を取得する。
※ 「挿入->名前->定義」で登録された名前定義名称を取得します。
名前定義されたセル範囲を取得する。
※ セル範囲の操作は こちらを参照してください。
jxl.Sheetを使用します。
Sheetインスタンスの取得は こちらを参照してください。
シート名を確認する。
シート内のページ切り替え位置を確認する。
有効行/列数を取得する。
指定行/列のセルを取得する。
※ セルの操作は こちらを参照してください。
行/列のフォーマットを取得する。
※ 行/列フォーマットの内容確認は こちらを参照してください。
イメージを取得する。
※ イメージの操作は こちらを参照してください。
ハイパーリンクを取得する。
※ リンクの操作は こちらを参照してください。
結合範囲を取得する。
※ 結合範囲の操作は こちらを参照してください。
jxl.CellViewを使用します。
CellViewインスタンスの取得は こちらを参照してください。
行/列共通のセルフォーマットを取得する。
フォーマット内容の確認は こちらを参照してください。
サイズ(幅)を取得する。
表示/非表示属性を取得する。
jxl.Cellを使用します。
位置を取得する。
内容を取得する。
セルの形式に合わせてCellインスタンスをキャストします。
表示/非表示属性を確認する。
セルフォーマットを取得する。
詳細な確認は こちらを参照してください。
セルのコメントを確認する。
jxl.format.CellFormatを使用します。
配置位置を確認する。
背景を確認する。
罫線を確認する。
※ 斜線は確認できません。
フォントを確認する。
jxl.Imageを使用します。
Imageインスタンスの取得は こちらを参照してください。
イメージの表示位置を確認する。
イメージのサイズを確認する。
イメージの内容を確認する。
jxl.Hyperlinkを使用します。
Hyperlinkインスタンスの取得は こちらを参照してください。
リンク設定位置を取得する。
範囲操作は こちらを参照してください。
リンク先を確認する。
jxl.Rangeを使用します。
開始/終了位置のセルを取得する。
セルの操作は こちらを参照してください。
次回は書き込み機能について記述していきたいと思います。
オープンソースのライブラリです。
同様のライブラリとしてはApache POIが有名ですが、Wordなど複数のMicrosoft文書を
操作できるPOIとは異なり、こちらはExcelに特化したライブラリとなっています。
今回はExcel文書の読み込み機能に焦点を当て、利用するAPIを記述していきたいと思います。
( 2008/06/23 )
導入
こちらよりアーカイブをダウンロードします。
アーカイブ内のjxl.jarにCLASSPATH環境変数を設定すれば導入完了となります。
開始/終了処理
jxl.Workbookを使用します。
Excelファイルを読み込む。
java.io.Fileインスタンスから読み込む
File excelFile = new File("path/to/excel.xls");
Workbook workbook = Workbook.getWorkbook(excelFile);
Workbook workbook = Workbook.getWorkbook(excelFile);
java.io.InputStreamインスタンスから読み込む
InputStream input = new java.io.FileInputStream("path/to/excel.xls");
Workbook workbook = Workbook.getWorkbook(input);
Workbook workbook = Workbook.getWorkbook(input);
Excelファイルの読み込みを終了する。
Workbook.close();
ワークブックの操作
jxl.Workbookを使用します。
ワークブック内のシート数を確認する。
int count = workbook.getNumberOfSheets();
ワークブック内のシート名称を確認する。
String[] sheetNames = workbook.getSheetNames();
内容を読み込むためにシートのインスタンスを取得する。
// インデックスを指定して取得する
int index = 0;
Sheet sheetByIndex = workbook.getSheet(index);
// シート名を指定して取得する
String sheetName = "Sheet1";
Sheet sheetByNames = workbook.getSheet(sheetName);
// 全てのシートを取得する
Sheet[] sheets = workbook.getSheets();
int index = 0;
Sheet sheetByIndex = workbook.getSheet(index);
// シート名を指定して取得する
String sheetName = "Sheet1";
Sheet sheetByNames = workbook.getSheet(sheetName);
// 全てのシートを取得する
Sheet[] sheets = workbook.getSheets();
※ シートの操作は こちらを参照してください。
登録された名前定義を取得する。
※ 「挿入->名前->定義」で登録された名前定義名称を取得します。
String[] rangeNames = workbook.getRangeNames();
名前定義されたセル範囲を取得する。
String rangeName = "area1";
Range[] ranges = workbook.findByName(rangeName);
Range[] ranges = workbook.findByName(rangeName);
※ セル範囲の操作は こちらを参照してください。
シートの操作
jxl.Sheetを使用します。
Sheetインスタンスの取得は こちらを参照してください。
シート名を確認する。
String sheetName = sheet.getName();
シート内のページ切り替え位置を確認する。
// 行の区切り位置を取得
int[] rowPageBreaks = sheet.getRowPageBreaks();
// 列の区切り位置を取得
int[] colPageBreaks = sheet.getColumnPageBreaks();
int[] rowPageBreaks = sheet.getRowPageBreaks();
// 列の区切り位置を取得
int[] colPageBreaks = sheet.getColumnPageBreaks();
有効行/列数を取得する。
// 行数の確認
int rowCount = sheet.getRows();
// 列数の確認
int colCount = sheet.getColumns();
int rowCount = sheet.getRows();
// 列数の確認
int colCount = sheet.getColumns();
指定行/列のセルを取得する。
// 行、列を指定してセルを取得
int column = 0;
int row = 0;
Cell cell = sheet.getCell(column, row);
// セル名を指定して取得
String cellName = "A1";
Cell cellByName = sheet.getCell(cellName);
// 行を指定してセルを取得
Cell[] rows = sheet.getCell(row);
// 列を指定してセルを取得
Cell[] columns = sheet.getCell(column);
int column = 0;
int row = 0;
Cell cell = sheet.getCell(column, row);
// セル名を指定して取得
String cellName = "A1";
Cell cellByName = sheet.getCell(cellName);
// 行を指定してセルを取得
Cell[] rows = sheet.getCell(row);
// 列を指定してセルを取得
Cell[] columns = sheet.getCell(column);
※ セルの操作は こちらを参照してください。
行/列のフォーマットを取得する。
// 行フォーマットの取得
int row = 0;
CellView rowView = sheet.getRowView(row);
// 列フォーマットの取得
int column = 0;
CellView colView = sheet.getColumnView(column);
int row = 0;
CellView rowView = sheet.getRowView(row);
// 列フォーマットの取得
int column = 0;
CellView colView = sheet.getColumnView(column);
※ 行/列フォーマットの内容確認は こちらを参照してください。
イメージを取得する。
// 全イメージ数の取得
int imageCount = sheet.getNumberOfImages();
// インデックス指定でイメージを取得
int index = 0;
Image image = sheet.getDrawing(index);
int imageCount = sheet.getNumberOfImages();
// インデックス指定でイメージを取得
int index = 0;
Image image = sheet.getDrawing(index);
※ イメージの操作は こちらを参照してください。
ハイパーリンクを取得する。
// 全リンクの取得
Hyperlink[] links = sheet.getHyperlinks();
Hyperlink[] links = sheet.getHyperlinks();
※ リンクの操作は こちらを参照してください。
結合範囲を取得する。
// 全結合範囲の取得
Range[] maerges = sheet.getMergedCells();
Range[] maerges = sheet.getMergedCells();
※ 結合範囲の操作は こちらを参照してください。
行/列の確認
jxl.CellViewを使用します。
CellViewインスタンスの取得は こちらを参照してください。
行/列共通のセルフォーマットを取得する。
CellFormat format = cellView.getFormat();
フォーマット内容の確認は こちらを参照してください。
サイズ(幅)を取得する。
int size = cellView.getSize();
表示/非表示属性を取得する。
boolean isHidden = cellView.isHidden();
セルの操作
jxl.Cellを使用します。
位置を取得する。
// 行位置の取得
int row = cell.getRow();
// 列位置の取得
int column = cell.getColumn();
int row = cell.getRow();
// 列位置の取得
int column = cell.getColumn();
内容を取得する。
セルの形式に合わせてCellインスタンスをキャストします。
// セルの形式に関わらず文字列として取得
String value = cell.getContents();
// セルの形式に合わせて内容を取得
CellType type = cell.getType();
// 真偽値
if (type == CellType.BOOLEAN) {
jxl.BooleanCell booleanCell = (jxl.BooleanCell) cell;
boolean value = booleanCell.getValue();
// 真偽関数
} else if (type == CellType.BOOLEAN_FORMULA) {
jxl.BooleanFormulaCell booleanCell = (jxl.BooleanFormulaCell) cell;
// 値の確認
boolean value = booleanCell.getValue();
// 関数の確認
String formula = booleanCell.getFormula();
// 日付
} else if (type == CellType.DATE) {
jxl.DateCell dateCell = (jxl.DateCell) cell;
// 値の確認
java.util.Date date = dateCell.getDate();
// 表示形式の確認
java.text.DateFormat dateFormat = dateCell.getDateFormat();
// 日付関数
} else if (type == CellType.DATE_FORMULA) {
jxl.DateCell dateCell = (jxl.DateFormulaCell) cell;
// 値の確認
java.util.Date date = dateCell.getDate();
// 表示形式の確認
java.text.DateFormat dateFormat = dateCell.getDateFormat();
// 関数の確認
String formula = dateCell.getFormula();
// エラー
} else if (type == CellType.ERROR) {
jxl.ErrorCell errorCell = (jxl.ErrorCell) cell;
// エラーコードの確認
int errorCode = errorCell.getErrorCode();
// 関数エラー
} else if (type == CellType.FORMULA_ERROR) {
jxl.ErrorFormulaCell errorCell = (jxl.ErrorFormulaCell) cell;
// エラーコードの確認
int errorCode = errorCell.getErrorCode();
// 関数の確認
String formula = errorCell.getFormula();
// 文字列
} else if (type == CellType.LABEL) {
jxl.LabelCell = labelCell = (jxl.LabelCell) cell;
String value = labelCell.getString();
// 文字列関数
} else if (type == CellType.STRING_FORMULA) {
jxl.StringFormulaCell = labelCell = (jxl.StringFormulaCell) cell;
// 値の確認
String value = labelCell.getString();
// 関数の確認
String formula = errorCell.getFormula();
// 数値
} else if (type == CellType.NUMBER) {
jxl.NumberCell numberCell = (jxl.NumberCell) cell;
// 値の確認
double value = numberCell.getDate();
// 表示形式の確認
java.text.NumberFormat numberFormat = dateCell.getNumberFormat();
} else if (type == CellType.NUMBER_FORMULA) {
jxl.NumberCell numberCell = (jxl.NumberCell) cell;
// 値の確認
double value = numberCell.getDate();
// 表示形式の確認
java.text.NumberFormat numberFormat = dateCell.getNumberFormat();
// 関数の確認
String formula = numberCell.getFormula();
}
String value = cell.getContents();
// セルの形式に合わせて内容を取得
CellType type = cell.getType();
// 真偽値
if (type == CellType.BOOLEAN) {
jxl.BooleanCell booleanCell = (jxl.BooleanCell) cell;
boolean value = booleanCell.getValue();
// 真偽関数
} else if (type == CellType.BOOLEAN_FORMULA) {
jxl.BooleanFormulaCell booleanCell = (jxl.BooleanFormulaCell) cell;
// 値の確認
boolean value = booleanCell.getValue();
// 関数の確認
String formula = booleanCell.getFormula();
// 日付
} else if (type == CellType.DATE) {
jxl.DateCell dateCell = (jxl.DateCell) cell;
// 値の確認
java.util.Date date = dateCell.getDate();
// 表示形式の確認
java.text.DateFormat dateFormat = dateCell.getDateFormat();
// 日付関数
} else if (type == CellType.DATE_FORMULA) {
jxl.DateCell dateCell = (jxl.DateFormulaCell) cell;
// 値の確認
java.util.Date date = dateCell.getDate();
// 表示形式の確認
java.text.DateFormat dateFormat = dateCell.getDateFormat();
// 関数の確認
String formula = dateCell.getFormula();
// エラー
} else if (type == CellType.ERROR) {
jxl.ErrorCell errorCell = (jxl.ErrorCell) cell;
// エラーコードの確認
int errorCode = errorCell.getErrorCode();
// 関数エラー
} else if (type == CellType.FORMULA_ERROR) {
jxl.ErrorFormulaCell errorCell = (jxl.ErrorFormulaCell) cell;
// エラーコードの確認
int errorCode = errorCell.getErrorCode();
// 関数の確認
String formula = errorCell.getFormula();
// 文字列
} else if (type == CellType.LABEL) {
jxl.LabelCell = labelCell = (jxl.LabelCell) cell;
String value = labelCell.getString();
// 文字列関数
} else if (type == CellType.STRING_FORMULA) {
jxl.StringFormulaCell = labelCell = (jxl.StringFormulaCell) cell;
// 値の確認
String value = labelCell.getString();
// 関数の確認
String formula = errorCell.getFormula();
// 数値
} else if (type == CellType.NUMBER) {
jxl.NumberCell numberCell = (jxl.NumberCell) cell;
// 値の確認
double value = numberCell.getDate();
// 表示形式の確認
java.text.NumberFormat numberFormat = dateCell.getNumberFormat();
} else if (type == CellType.NUMBER_FORMULA) {
jxl.NumberCell numberCell = (jxl.NumberCell) cell;
// 値の確認
double value = numberCell.getDate();
// 表示形式の確認
java.text.NumberFormat numberFormat = dateCell.getNumberFormat();
// 関数の確認
String formula = numberCell.getFormula();
}
表示/非表示属性を確認する。
boolean isHidden = cell.isHidden();
セルフォーマットを取得する。
jxl.format.CellFormat format = cell.getCellFormat();
詳細な確認は こちらを参照してください。
セルのコメントを確認する。
jxl.CellFeatures features = cell.getCellFeatures();
String comment = features.getComment();
String comment = features.getComment();
セルフォーマットの確認
jxl.format.CellFormatを使用します。
配置位置を確認する。
// 横位置
jxl.format.Alignment align = format.getAlignment();
// 縦位置
jxl.format.VerticalAlignment align = format.getVerticalAlignment();
// インデント
int indent = format.getIndentation();
// 方向
Orientation orientation = format.getOrientation();
jxl.format.Alignment align = format.getAlignment();
// 縦位置
jxl.format.VerticalAlignment align = format.getVerticalAlignment();
// インデント
int indent = format.getIndentation();
// 方向
Orientation orientation = format.getOrientation();
背景を確認する。
// 背景色
jxl.format.Colour color = format.getBackgroundColour();
// パターン
jxl.format.Pattern pattern = format.getPattern();
jxl.format.Colour color = format.getBackgroundColour();
// パターン
jxl.format.Pattern pattern = format.getPattern();
罫線を確認する。
// 罫線の有無
boolean hasBorder = format.hasBorder();
// Borderクラスで確認する罫線位置を指定
// 罫線の種類
jxl.format.BorderLineStyle style = format.getBorderLine(jxl.format.Border.TOP);
// 罫線の色
jxl.format.Colour color = format.getBorderColour(jxl.format.Border.TOP);
boolean hasBorder = format.hasBorder();
// Borderクラスで確認する罫線位置を指定
// 罫線の種類
jxl.format.BorderLineStyle style = format.getBorderLine(jxl.format.Border.TOP);
// 罫線の色
jxl.format.Colour color = format.getBorderColour(jxl.format.Border.TOP);
※ 斜線は確認できません。
フォントを確認する。
// フォントの取得
jxl.format.Font font = format.getFont();
// 文字色
jxl.format.Colour color = format.getColour();
// フォント名
String name = format.getName();
// サイズ
int size = format.getPointSize();
// イタリックかどうか
boolean isItalic = format.isItalic();
// 文字飾り
// 取り消し線
// 上下付き
jxl.format.Font font = format.getFont();
// 文字色
jxl.format.Colour color = format.getColour();
// フォント名
String name = format.getName();
// サイズ
int size = format.getPointSize();
// イタリックかどうか
boolean isItalic = format.isItalic();
// 文字飾り
// 取り消し線
// 上下付き
イメージ操作
jxl.Imageを使用します。
Imageインスタンスの取得は こちらを参照してください。
イメージの表示位置を確認する。
// 行位置を取得
double rowPosition = image.getRow();
// 列位置を取得
double colPoisition = image.getColumn();
double rowPosition = image.getRow();
// 列位置を取得
double colPoisition = image.getColumn();
イメージのサイズを確認する。
// 幅を取得
double width = image.getWidth();
// 高さを取得
double height = image.getHeight();
double width = image.getWidth();
// 高さを取得
double height = image.getHeight();
イメージの内容を確認する。
// java.io.Fileインスタンスとして取得
java.io.File file = image.getImageFile();
// byte配列として取得
byte[] data = image.getImageData();
java.io.File file = image.getImageFile();
// byte配列として取得
byte[] data = image.getImageData();
リンク操作
jxl.Hyperlinkを使用します。
Hyperlinkインスタンスの取得は こちらを参照してください。
リンク設定位置を取得する。
// 範囲取得
Range range = hyperlink.getRange();
// 開始位置を取得
int startRow = hyperlink.getRow();
int startCol = hyperlink.getColumn();
// 終了位置を取得
int endRow = hyperlink.getLastRow();
int endCol = hyperlink.getLastColumn();
Range range = hyperlink.getRange();
// 開始位置を取得
int startRow = hyperlink.getRow();
int startCol = hyperlink.getColumn();
// 終了位置を取得
int endRow = hyperlink.getLastRow();
int endCol = hyperlink.getLastColumn();
範囲操作は こちらを参照してください。
リンク先を確認する。
// リンク先がファイルの場合
if (hyperlink.isFile()) {
java.io.File file = hyperlink.getFile();
}
// リンク先がURLの場合
if (hyperlink.isURL()) {
java.net.URL url = hyperlink.getURL();
}
if (hyperlink.isFile()) {
java.io.File file = hyperlink.getFile();
}
// リンク先がURLの場合
if (hyperlink.isURL()) {
java.net.URL url = hyperlink.getURL();
}
範囲の操作
jxl.Rangeを使用します。
開始/終了位置のセルを取得する。
// 開始セル
jxl.Cell start = range.getTopLeft();
// 終了セル
jxl.Cell end = range.getBottomRight();
jxl.Cell start = range.getTopLeft();
// 終了セル
jxl.Cell end = range.getBottomRight();
セルの操作は こちらを参照してください。
次回は書き込み機能について記述していきたいと思います。