コンバータ (テーブル型データ to Excel-CSV ファイル) (Converter (Table type data to Excel-CSV File))
この工程は、テーブル型データ項目の値を Excel 対応の CSV として、ファイル型データ項目に格納します。ファイルは追加され、既存のファイルには影響を与えません。
Configs:共通設定
  • 工程名
  • メモ
Configs
  • A: 対象のテーブル型データ項目 *
  • B: 保存ファイル名 *#{EL}
  • C: CSV を保存するファイル型データ項目 *

Capture

Notes

  • ファイル実体は tab-separated-values (utf-16le-bom) です

See also

Script (click to open)
  • 下記のスクリプトを記述した XML ファイルをダウンロードできます
    • converter-table-to-excelcsv.xml (C) Questetra, Inc. (MIT License)
    • Professional をご利用であればファイルの内容を改変することでオリジナルのアドオンとして活用できます

main();

function main() {
    //// == Config Retrieving / 工程コンフィグの参照 ==
    const tableId = configs.get("Table_DataId");
    const filename = configs.get("File_Name");
    const fileId = configs.get("File_DataId");

    if (filename === "" || filename === null) {
        throw new Error("File Name is blank");
    }

    //// == Data Retrieving / ワークフローデータの参照 ==
    const myTable = engine.findDataByNumber(tableId);
    // com.questetra.bpms.core.model.formdata.ListArray
    let myFiles = engine.findDataByNumber(fileId); // java.util.ArrayList
    if (myFiles === null) {
        myFiles = new java.util.ArrayList();
    }

    let myTsv = "";

    if (myTable !== null) {
        myTsv = tableToTsv(myTable);
    }

    myFiles.add(
        new com.questetra.bpms.core.event.scripttask.NewQfile(
            filename,
            "text/tab-separated-values; charset=UTF-16",
            "x-UTF-16LE-BOM",
            myTsv
        )
    );

    //// == Data Updating / ワークフローデータへの代入 ==
    engine.setDataByNumber(fileId, myFiles);
}

/**
 * テーブル型データ を tsv に変換する
 * @param {com.questetra.bpms.core.model.formdata.ListArray} myTable テーブル型データ
 * @return {String} mytsv 変換後の tsv 形式の文字列
 */
function tableToTsv(myTable) {
    //// == Calculating / 演算 ==
    const numOfRows = myTable.size() - 0; // 行(Tableの高さ)
    const numOfCols = myTable.getRow(0).size(); // 列(Tableの幅)
    let mytsv = "";

    for (let i = 0; i < numOfRows; i++) {
        for (let j = 0; j < numOfCols; j++) {
            mytsv += myTable.get(i, j);
            if (j != numOfCols - 1) {
                mytsv += "\t";
            }
        }
        if (i != numOfRows - 1) {
            mytsv += "\n";
        }
    }

    return mytsv;
}
%d人のブロガーが「いいね」をつけました。