テンプレート処理サンプルコード
public static int templateBook(){
int rc, row;
JxlsLib JXLS = JxlsLib.INSTANCE;
BufferedReader keyin = new BufferedReader(new InputStreamReader(System.in));
/* WindowsでUTF8でない場合はSJISに文字コード設定 */
if (Platform.isWindows()){
if (!System.getProperty("file.encoding").equals("UTF-8")){
System.out.printf("X-TRAiN文字コードSJIS設定\n");
JXLS.set_charset("SJIS");
}
}
/* 開始ログ出力 */
Calendar c = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 E曜日");
sdf.applyPattern("yyyy/MM/dd HH:mm:ss SSS");
System.out.printf("処理開始 %s\n", sdf.format(c.getTime()));
/* テンプレートExcelブックオープン */
String book = JXLS.open_template(TEMPLATE_PATH);
if (book == null || book.length() == 0){
System.out.printf("ERROR:JXLS.open_template()");
return(-1);
}
rc = JXLS.error_code(book);
if (rc != 0){
String error_mesg = JXLS.error_mesg(book);
System.out.printf("ERROR:JXLS.open_template() rc=%d %s\n", rc, error_mesg);
JXLS.scrap_book(book);
return(-1);
}
/* ブック名設定 */
String arguments = "BOOK=" + BOOK_PATH;
rc = JXLS.put_values(book, arguments);
if (rc != 0){
String error_mesg = JXLS.error_mesg(book);
JXLS.scrap_book(book);
System.out.printf("ERROR:JXLS.put_values() rc=%d %s\n", rc, error_mesg);
return(-1);
}
/* キー入力内容でExcel更新 */
try {
System.out.print("更新内容(セル値のみ上書き可能)\n");
System.out.print("> ");
System.out.flush();
String line = new String(keyin.readLine());
if (line == null){
return(-1);
} else {
rc = JXLS.put_values(book, line);
if (rc != 0){
String error_mesg = JXLS.error_mesg(book);
JXLS.scrap_book(book);
System.out.printf("ERROR:JXLS.put_values() rc=%d %s\n", rc, error_mesg);
return(-1);
}
}
} catch (IOException e){
return(-1);
} catch (NullPointerException e){
return(-1);
}
/* Excelブック保存 */
rc = JXLS.save_book(book);
if (rc != 0){
String error_mesg = JXLS.error_mesg(book);
JXLS.scrap_book(book);
System.out.printf("ERROR:JXLS.save_book() rc=%d %s\n", rc, error_mesg);
return(-1);
}
/* 終了ログ出力 */
c = Calendar.getInstance();
sdf = new SimpleDateFormat("yyyy年MM月dd日 E曜日");
sdf.applyPattern("yyyy/MM/dd HH:mm:ss SSS");
System.out.printf("処理終了 %s\n", sdf.format(c.getTime()));
return(0);
}
解説
テンプレートブックオブジェクトの作成
/* テンプレートExcelブックオープン */
String book = JXLS.open_template(TEMPLATE_PATH);
if (book == null || book.length() == 0){
System.out.printf("ERROR:JXLS.open_template()");
return(-1);
}
open_template関数を使い、テンプレートブックオブジェクトを生成します。
オブジェクトの実体は、DLL/共有ライブラリ内に確保された、X-TRAiN用構造体の
アドレスを16進数に変換した文字列です。
以降の関数呼び出し時には、この値を使用します。
エラー時は戻り値としてNULLが返却されますが、これはメモリ確保ができなかった場合のみです。
読み込みエラーの判定は、error_code関数でエラーコードを、
error_mesg関数でエラーメッセージを取得して行います。
異常終了する場合は、scrap_book関数でメモリの解放を行ってください。
値/属性の設定
// 列幅設定
arguments = "B.幅=20 C.幅=20 D.幅=20 E.幅=20";
rc = JXLS.put_values(book, arguments);
if (rc != 0){
String error_mesg = JXLS.error_mesg(book);
JXLS.scrap_book(book);
System.out.printf("ERROR:JXLS.open_book() rc=%d %s\n", rc, error_mesg);
System.exit(-1);
}
open_template関数を使い、テンプレートブックオブジェクトを生成します。
オブジェクトの実体は、DLL/共有ライブラリ内に確保された、X-TRAiN用構造体の
アドレスを16進数に変換した文字列です。
以降の関数呼び出し時には、この値を使用します。
エラー時は戻り値としてNULLが返却されますが、これはメモリ確保ができなかった場合のみです。
読み込みエラーの判定は、error_code関数でエラーコードを、
error_mesg関数でエラーメッセージを取得して行います。
異常終了する場合は、scrap_book関数でメモリの解放を行ってください。
作成ブック名、更新対象シートの指定
/* ブック名設定 */
String arguments = "BOOK=" + BOOK_PATH;
rc = JXLS.put_values(book, arguments);
if (rc != 0){
String error_mesg = JXLS.error_mesg(book);
JXLS.scrap_book(book);
System.out.printf("ERROR:JXLS.put_values() rc=%d %s\n", rc, error_mesg);
return(-1);
}
put_values関数を使い、作成ブック名や更新対象シートのカレント化を行います。
セル値の更新
/* キー入力内容でExcel更新 */
try {
System.out.print("更新内容(セル値のみ上書き可能)\n");
System.out.print("> ");
System.out.flush();
String line = new String(keyin.readLine());
if (line == null){
return(-1);
} else {
rc = JXLS.put_values(book, line);
if (rc != 0){
String error_mesg = JXLS.error_mesg(book);
JXLS.scrap_book(book);
System.out.printf("ERROR:JXLS.put_values() rc=%d %s\n", rc, error_mesg);
return(-1);
}
テンプレート処理では、セルの値のみを更新することができます。
罫線、セルの塗りつぶし、フォントの設定、書式の追加や変更を行うことはできません。
本サンプルは、標準入力(キーボード入力)より、A1=値 の形式で
セルの値を指定して更新する仕様です。
セル値の更新
/* キー入力内容でExcel更新 */
try {
System.out.print("更新内容(セル値のみ上書き可能)\n");
System.out.print("> ");
System.out.flush();
String line = new String(keyin.readLine());
if (line == null){
return(-1);
} else {
rc = JXLS.put_values(book, line);
if (rc != 0){
String error_mesg = JXLS.error_mesg(book);
JXLS.scrap_book(book);
System.out.printf("ERROR:JXLS.put_values() rc=%d %s\n", rc, error_mesg);
return(-1);
}
ブックの保存
/* Excelブック保存 */
rc = JXLS.save_book(book);
if (rc != 0){
String error_mesg = JXLS.error_mesg(book);
JXLS.scrap_book(book);
System.out.printf("ERROR:JXLS.save_book() rc=%d %s\n", rc, error_mesg);
return(-1);
}