您的位置:首页 > 编程语言 > Java开发

Java Excel API(読み込み機能)

2012-03-25 22:38 405 查看
「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インスタンスから読み込む

File excelFile = new File("path/to/excel.xls");

Workbook workbook = Workbook.getWorkbook(excelFile);

java.io.InputStreamインスタンスから読み込む

InputStream input = new java.io.FileInputStream("path/to/excel.xls");

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();

※ シートの操作はこちらを参照してください。

登録された名前定義を取得する。

※ 「挿入->名前->定義」で登録された名前定義名称を取得します。

String[] rangeNames = workbook.getRangeNames();

名前定義されたセル範囲を取得する。

String rangeName = "area1";

Range[] ranges = workbook.findByName(rangeName);

※ セル範囲の操作はこちらを参照してください。

シートの操作

jxl.Sheetを使用します。

Sheetインスタンスの取得はこちらを参照してください。

シート名を確認する。

String sheetName = sheet.getName();

シート内のページ切り替え位置を確認する。

// 行の区切り位置を取得

int[] rowPageBreaks = sheet.getRowPageBreaks();

// 列の区切り位置を取得

int[] colPageBreaks = sheet.getColumnPageBreaks();

有効行/列数を取得する。

// 行数の確認

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 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);

※ イメージの操作はこちらを参照してください。

ハイパーリンクを取得する。

// 全リンクの取得

Hyperlink[] links = sheet.getHyperlinks();

※ リンクの操作はこちらを参照してください。

結合範囲を取得する。

// 全結合範囲の取得

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();

内容を取得する。

セルの形式に合わせて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();

}

表示/非表示属性を確認する。

boolean isHidden = cell.isHidden();

セルフォーマットを取得する。

jxl.format.CellFormat format = cell.getCellFormat();

詳細な確認はこちらを参照してください。

セルのコメントを確認する。

jxl.CellFeatures features = cell.getCellFeatures();

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.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);

※ 斜線は確認できません。

フォントを確認する。

// フォントの取得

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 width = image.getWidth();

// 高さを取得

double height = image.getHeight();

イメージの内容を確認する。

// java.io.Fileインスタンスとして取得

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();

範囲操作はこちらを参照してください。

リンク先を確認する。

// リンク先がファイルの場合

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();

セルの操作はこちらを参照してください。

次回は書き込み機能について記述していきたいと思います。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: