テンプレート処理サンプルコード

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