Java Excel API(書き込み機能(2))

セルの操作

jxl.write.WritableCellのメソッドを使用します。
以下変数sheetをWritableSheetのインスタンスとします。

セルを生成する。
セルの表示形式により、jxl.write.WritableCellの実装クラスをインスタンス化します。

空白セル
// セルの位置を元に生成
int col = 0; int row = 1; // セル位置
jxl.write.WritableCell cell = new jxl.write.Blank(col, row);

// セルの位置、フォーマットを元に生成
col = 1; row = 1; // セル位置
jxl.format.CellFormat format = cell.getCellFormat();
jxl.write.WritableCell formatedCell = new jxl.write.Blank(col, row, format);
sheet.addCell(formatedCell);

// 既存のセルを元に生成
jxl.write.WritableCell copiedCell = new jxl.write.Blank(cell);
sheet.addCell(copiedCell);


ラベル
// セルの位置を元に生成
String value = "エムザス";
int col = 0; int row = 1; // セル位置
jxl.write.WritableCell cell = new jxl.write.Label(col, row, value);

// セルの位置、フォーマットを元に生成
value = "えむざす";
col = 1; row = 1; // セル位置
jxl.format.CellFormat format = cell.getCellFormat();
jxl.write.WritableCell formatedCell = new jxl.write.Label(col, row, value, format);
sheet.addCell(formatedCell);

// 既存のセルを元に生成
jxl.write.WritableCell copiedCell = new jxl.write.Label(((jxl.write.Label) cell));
((jxl.write.Label) copiedCell).setString(value);
sheet.addCell(copiedCell);


数値
// セルの位置を元に生成
double value = 1.111;
int col = 0; int row = 1; // セル位置
jxl.write.WritableCell cell = new jxl.write.Number(col, row, value);

// セルの位置、フォーマットを元に生成
value = 2.222;
col = 1; row = 1; // セル位置
jxl.format.CellFormat format = cell.getCellFormat();
jxl.write.WritableCell formatedCell = new jxl.write.Number(col, row, value, format);
sheet.addCell(formatedCell);

// 既存のセルを元に生成
value = 4.444;
jxl.write.WritableCell copiedCell = new jxl.write.Number(((jxl.write.Number) cell));
((jxl.write.Number) copiedCell).setValue(value);
sheet.addCell(copiedCell);


真偽値
// セルの位置を元に生成
boolean value = true;
int col = 0; int row = 1; // セル位置
jxl.write.WritableCell cell = new jxl.write.Boolean(col, row, value);

// セルの位置、フォーマットを元に生成
value = false;
col = 1; row = 1; // セル位置
jxl.format.CellFormat format = cell.getCellFormat();
jxl.write.WritableCell formatedCell = new jxl.write.Boolean(col, row, value, format);
sheet.addCell(formatedCell);

// 既存のセルを元に生成
jxl.write.WritableCell copiedCell = new jxl.write.Boolean(((jxl.write.Boolean) cell));
((jxl.write.Boolean) copiedCell).setValue(false);
sheet.addCell(copiedCell);


関数
// セルの位置を元に生成
String formula = "SUM(A1:C1)";
int col = 0; int row = 1; // セル位置
jxl.write.WritableCell cell = new jxl.write.Formula(col, row, formula);
sheet.addCell(cell);

// セルの位置、フォーマットを元に生成
formula = "TODAY()";
col = 1; row = 1; // セル位置
jxl.format.CellFormat format = cell.getCellFormat();
jxl.write.WritableCell formatedCell = new jxl.write.Formula(col, row, formula, format);
sheet.addCell(formatedCell);


内容を設定する。
セルの表示形式により、jxl.write.WritableCellの実装クラスへキャストし、値を設定します。
// 設定対象セル
jxl.write.WritableCell WritableCell cell;

// セルの表示形式を取得
CellType type = cell.getType();
// 真偽値
if (cell[i].getType() == jxl.CellType.BOOLEAN) {
((jxl.write.Boolean) cell[i]).setValue(false);
// ラベル
} else if (cell[i].getType() == jxl.CellType.LABEL) {
((jxl.write.Label) cell[i]).setString("updated");
// 数値
} else if (cell[i].getType() == jxl.CellType.NUMBER) {
((jxl.write.Number) cell[i]).setValue(5);
}


セルフォーマットを設定する。
jxl.write.WritableCellFormatを使用します。

新規に設定する場合
// WritableCellFormatを生成
jxl.write.WritableCellFormat format = new jxl.write.WritableCellFormat();
//
// フォーマットの詳細設定
//
// 設定したフォーマットをセルに対して適用
cell.setCellFormat(format);

// フォントを指定してフォーマットを生成
jxl.write.WritableFont font = new jxl.write.WritableFont(jxl.write.WritableFont.ARIAL);
jxl.write.WritableCellFormat formatWithFont = new jxl.write.WritableCellFormat(font);
cell.setCellFormat(formatWithFont);


※フォントの詳細は こちらを参照してください。


他セルに設定したフォーマットを元にする場合

// 1行目、1列目のCellFormatをコピーする場合
// 既存のCellFormatを取得
jxl.Cell basicCell = sheet.getCell(0, 0);
jxl.format.CellFormat basicFormat = basicCell.getCellFormat();
// 取得したCellFormatを元にWritableCellFormatを生成
jxl.write.WritableCellFormat format =
new jxl.write.WritableCellFormat(basicFormat);
//
// フォーマットの詳細設定
//
// 設定したフォーマットをセルに対して適用
cell.setCellFormat(format);


※フォーマットの詳細は こちらを参照してください。


セルのコメントを設定する。
jxl.write.WritableCellFeaturesを使用します。

新規に設定する場合
// デフォルトの設定で生成
jxl.write.WritableCellFeatures features = new jxl.write.WritableCellFeatures();
// コメントを設定
cellFeatures.setComment("コメント");
// 設定したCellFeaturesをセルに対して適用
cell.setCellFeatures(cellFeatures);


他セルに設定したCellFeaturesを元にする場合

// 1行目、1列目のCellFeaturesを元にする場合
// 既存のCellFeaturesを取得
jxl.Cell basicCell = sheet.getCell(0, 0);
jxl.CellFeatures basicFeatures = basicCell.getFeatures();
// 取得したCellFeaturesを元にWritableCellFeaturesを生成
jxl.write.WritableCellFeatures features =
new jxl.write.WritableCellFeatures(basicFeatures);
// コメントを設定
cellFeatures.setComment("コメント");
// 設定したCellFeaturesをセルに対して適用
cell.setCellFeatures(cellFeatures);


セルフォーマットの設定

フォーマット設定クラスjxl.write.WritableCellFormatを使用します。
以下生成したクラスの変数をformatとします。

設定クラスの生成

新規に生成する場合
// デフォルトの設定で生成
jxl.write.WritableCellFormat format = new jxl.write.WritableCellFormat();


他セルに設定したCellFormatを元にする場合
// 既存のCellFeaturesを取得
jxl.Cell basicCell = sheet.getCell(0, 0);
jxl.format.CellFormat basicFormat = basicCell.getCellFormat();
jxl.write.WritableCellFormat format = new jxl.write.WritableCellFormat();


フォントを指定して生成する場合
// フォント設定クラスを生成(詳細は後述)
jxl.write.WritableFont font = new jxl.write.WritableFont(jxl.write.WritableFont.ARIAL);
jxl.write.WritableCellFormat format = new jxl.write.WritableCellFormat(font);


配置を設定する。
// 横位置の設定(中央配置)
format.setAlignment(jxl.format.Alignment.CENTER);

// 縦位置の設定(中央配置)
format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTER);

// インデントの設定(5)
format.setIndentation(5);

// 方向の設定(45度)
format.setOrientation(jxl.format.Orientation.PLUS_45);

// 折り返して全体を表示する
format.setWrap(true);

// 縮小して全体を表示する
format.setShrinkToFit(true);


罫線を設定する。
// 四方に点線を設定
format.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.DOTTED);

// 下方に実線、青色を設定
format.setBorder(jxl.format.Border.BOTTOM, jxl.format.BorderLineStyle.MEDIUM, jxl.format.Colour.BLUE);


背景を設定する。
// 背景色を設定
format.setBackground(jxl.format.Colour.BLUE);

// 背景色、パターンを設定
format.setBackground(jxl.format.Colour.YELLOW, jxl.format.Pattern.PATTERN1);


フォントを設定する。
jxl.write.WritableFontを使用します。
以下生成したクラスの変数をfontとします。

// デフォルトの設定でオブジェクトを生成
jxl.write.WritableFont fontDefault = new jxl.write.WritableFont(jxl.write.WritableFont.ARIAL);

// ポイントサイズ設定を行いオブジェクトを生成
jxl.write.WritableFont fontPs = new jxl.write.WritableFont(jxl.write.WritableFont.ARIAL, 10);

// ポイントサイズ、太字設定を行いオブジェクトを生成
jxl.write.WritableFont fontPsBold = new jxl.write.WritableFont(jxl.write.WritableFont.ARIAL, 10, jxl.write.WritableFont.BOLD);

// ポイントサイズ、太字、イタリック設定を行いオブジェクトを生成
jxl.write.WritableFont fontPsBoldItalic =
new jxl.write.WritableFont(jxl.write.WritableFont.ARIAL, 10, jxl.write.WritableFont.BOLD, true);

// ポイントサイズ、太字、イタリック、下線設定を行いオブジェクトを生成
jxl.write.WritableFont fontPsBoldItalicUs =
new jxl.write.WritableFont(jxl.write.WritableFont.ARIAL, 10, jxl.write.WritableFont.BOLD,
true, jxl.format.UnderlineStyle.DOUBLE);

// ポイントサイズ、太字、イタリック、下線、文字色設定を行いオブジェクトを生成
jxl.write.WritableFont fontPsBoldItalicUsColor =
new jxl.write.WritableFont(jxl.write.WritableFont.ARIAL, 10, jxl.write.WritableFont.BOLD,
true, jxl.format.UnderlineStyle.DOUBLE, jxl.format.Colour.BLUE);

// ポイントサイズ、太字、イタリック、下線、文字色、文字飾り設定を行いオブジェクトを生成
jxl.write.WritableFont fontPsBoldItalicUsColorSs =
new jxl.write.WritableFont(jxl.write.WritableFont.ARIAL, 10, jxl.write.WritableFont.BOLD,
true, jxl.format.UnderlineStyle.DOUBLE, jxl.format.Colour.BLUE,
jxl.format.ScriptStyle.SUPERSCRIPT);

// ポイントサイズの設定
fontDefault.setPointSize(20);
// 太字設定
fontDefault.setBoldStyle(jxl.write.WritableFont.BOLD);
// イタリック設定
fontDefault.setItalic(true);
// 下線設定
fontDefault.setBoldStyle(jxl.format.UnderlineStyle.SINGLE);
// 文字色設定
fontDefault.setBoldStyle(jxl.format.Colour.BLUE);
// 文字飾り(取り消し線)の設定
fontDefault.setStruckout(true);
// 文字飾り(上下付き)の設定
fontDefault.setStruckout(jxl.format.ScriptStyle.SUBSCRIPT);


イメージの操作

jxl.write.WritableImageを使用します。
指定できるイメージはPNGファイルのみです。

ファイル指定でイメージを設定
// イメージファイル
java.io.File imageFile = new java.io.File("path/to/file");
jxl.write.WritableImage image =
new jxl.write.WritableImage(1.0, 1.0, 1, 1, imageFile);
sheet.addImage(image);


ファイルのバイトデータ指定でイメージを設定
// イメージファイル
java.io.File imageFile = new java.io.File("path/to/file");
byte[] b = new byte[(int) imageFile.length()];
java.io.InputStream input = new java.io.FileInputStream(imageFile);
input.read(b);
jxl.write.WritableImage image =
new jxl.write.WritableImage(1.0, 1.0, 1, 1, b);
sheet.addImage(image);


ハイパーリンクの操作

jxl.write.WritableHyperlinkを使用します。

リンク先としてファイルを設定する。
// リンク先ファイル
java.io.File linkedFile = new java.io.File("path/to/file");

// 単一セルに対してリンクを設定
jxl.write.WritableHyperlink singleLink = new jxl.write.WritableHyperlink(0, 0, linkedFile);
sheet.addHyperlink(singleLink);

// 単一セルに対してリンクを設定(ラベル付き)
jxl.write.WritableHyperlink singleLinkWithLabel = new jxl.write.WritableHyperlink(1, 0, linkedFile, "ファイルはこちら");
sheet.addHyperlink(singleLinkWithLabel);

// セル範囲に対してリンクを設定
jxl.write.WritableHyperlink multiLink = new jxl.write.WritableHyperlink(2, 0, 3, 0, linkedFile);
sheet.addHyperlink(multiLink);

// セル範囲に対してリンクを設定(ラベル付き ※最左上のセルのみラベルが有効になります)
jxl.write.WritableHyperlink multiLinkWithLabel = new jxl.write.WritableHyperlink(2, 0, 3, 0, linkedFile, "ファイルはこちら");
sheet.addHyperlink(multiLinkWithLabel);


リンク先としてURLを設定する。
// リンク先URL
java.net.URL linkedUrl = new java.net.URL("http://www.emxas.co.jp");

// 単一セルに対してリンクを設定
jxl.write.WritableHyperlink singleLink = new jxl.write.WritableHyperlink(0, 0, linkedUrl);
sheet.addHyperlink(singleLink);

// セル範囲に対してリンクを設定
jxl.write.WritableHyperlink multiLink = new jxl.write.WritableHyperlink(2, 0, 3, 0, linkedUrl);
sheet.addHyperlink(multiLink);

// セル範囲に対してリンクを設定(ラベル付き ※最左上のセルのみラベルが有効になります)
jxl.write.WritableHyperlink multiLinkWithLabel = new jxl.write.WritableHyperlink(5, 0, 6, 0, linkedUrl, "ファイルはこちら");
sheet.addHyperlink(multiLinkWithLabel);


リンク先としてワークブック内のセル範囲する。
// リンク先シート
jxl.write.WritableSheet secondSheet = writableWorkbook.getSheet(1);

// 単一セルに対してリンクを設定
jxl.write.WritableHyperlink singleLink =
new jxl.write.WritableHyperlink(5, 0, "2シート目へ", secondSheet, 3, 3);
sheet.addHyperlink(singleLink);

// セル範囲に対してリンクを設定(※最左上のセルのみラベルが有効になります)
jxl.write.WritableHyperlink multiLink =
new jxl.write.WritableHyperlink(3, 3, 5, 5, "2シート目へ", secondSheet, 3, 3, 5, 5);
sheet.addHyperlink(multiLink);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值