コンバータ (テーブル型データ to Excel-CSV ファイル)

コンバータ (テーブル型データ to Excel-CSV ファイル) (Converter (Table type data to Excel-CSV File))
テーブル型データ項目の値を、Excel 対応の CSV としてファイル型データ項目に格納します。ファイルは追加され、既存のファイルには影響を与えません。
2019-10-21 (C) Questetra, Inc. (MIT License)
Configs
  • A: 対象のテーブル型データ項目 *
  • B: 保存ファイル名 * #{EL}
  • C: CSV を保存するファイル型データ項目 *
Script
// Converter from Table to Excel-CSV (ver. 20180829)
// (c) 2018, Questetra, Inc. (the MIT License)

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
var   myFiles  = engine.findDataByNumber( fileId );// java.util.ArrayList
if( myFiles === null ){ myFiles = new java.util.ArrayList(); }

var myTsv = "";

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

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

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


}



  //table to CSV
function tabletocsv(myTable) {

//// == Calculating / 演算 ==
let numOfRows = myTable.size() - 0; // 行(Tableの高さ)
let 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;

}

Download

Notes

  1. ファイル実体は tab-separated-values (utf-16le-bom) です
%d人のブロガーが「いいね」をつけました。