2021-10-01
https://support.questetra.com/bpmn-icons/converter-tabletoexcelcsv/
https://support.questetra.com/ja/bpmn-icons/converter-tabletoexcelcsv/
Stores the values in a Table type data item into a File type data item as an Excel compatible CSV. It does
not affect existing files. Just add.
テーブル型データ項目の値を、Excel 対応の CSV としてファイル型データ項目に格納します。ファイルは追加され、既存のファイルには影響を与えません。
(C) Questetra, Inc. (MIT License)
2
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAACx0lEQVRYR8WXz0sUYRjHP5O0CLX+
uHTIQ7sHIby0BdIh0EU6hwmd20Vx9mb9AUvlQQSRVhBq0WW3gxcFKzx4000kBKO2QNgSssgS6uDu
oQQJJt4ZZ3ecH+s4O+kLyy7s+z7fz/PM87zPMxKnvKRj6afpBbpRiCDRAkQOzhdQKCEhvvMkeOnW
7tEAWVrYZwi4B6qom1UCUgSYII747bhqAzwhxhkeH0PYLCTE48i8cCJwBnhKCkn13I+VQua+nSF7
gDQ54K4fyhUbCjkSxM02rQD+en5YT2GChJpLlXUYQHvmWV89txq7bcyJKoCW7Vt1JJxb7hIBwnp1
VAHSPAQeuLVSa99U1xTzW/Msflt02vYIWdXDCCBKptkPgI07GzQFmhhcGXSCKCHTWgXQbrjnRvGe
iz20nWvzxJO8lqS9uZ3t39u1INRc0CJgk/nCi47WDk8AxkOOEAcVoQGkyat3vGH5BbD3d4/RwijD
b4fNzrxCJqoDfAEuGXdMd03TeaHTUwRC50NqDgjx8Q/jJN8k7ewUkLmqAyielBwOieiFg+Fa4tpJ
GelIgODZIJnuDDt/dhh67a41rN5aZfnHspPnVWwDgOURiF1CPBvN0hvqJfcxx8DKgH+BUnhPgohj
EhrFG6QG1n6usVne9ASw9H2J3CfR3w4tQxLalOHszVn6wn0I8XpXppixRs9UhpaLaPLGJP2X+2ls
aKxXH1sAMFxE2l1guYqNEHOf51j4uuAJplgqsv5r3Xi2jKyNd0c2Ix1iZnPGzyS0aUZaOxbVYGlI
Y9fH2N3fZeTdiKcImA6VCRCytmOx61QHEh3zf45kUAm9LndyQyk8QyZmfoYnNZZbPK8dAf1fbVAR
V5jXSakMxLy9mOgQWnWIUVp83IIIYfFqlqrv1cz8wEREFKJIRFBoQeKKukU0FokSCgUk8rU8dp8D
flS8Cxv/AFp57iGwqv7bAAAAAElFTkSuQmCC
{
const tableDef = engine.createDataDefinition('テーブル', 10, 'q_table', 'LIST');
tableDef.addSubDataDefinition('文字', 'string', 'STRING');
tableDef.addSubDataDefinition('数値', 'decimal', 'DECIMAL');
tableDef.addSubDataDefinition('日付', 'date', 'DATE_YMD');
tableDef.addSubDataDefinition('選択', 'select', 'SELECT');
return tableDef;
};
const assertFile = (file, name, contentType) => {
expect(file.getName()).toEqual(name);
expect(file.getContentType()).toEqual(contentType);
};
test('File Name is blank', () => {
const tableDef = prepareTableDef();
configs.putObject('Table_DataId', tableDef);
engine.setData(tableDef, null);
configs.put('File_Name', '');
const fileDef = engine.createDataDefinition('ファイル', 5, 'q_file', 'FILE');
configs.putObject('File_DataId', fileDef);
engine.setData(fileDef, null);
try {
execute();
fail('not come here');
} catch (e) {
expect(e.message).endsWith('File Name is blank');
}
});
test('Table is null', () => {
const tableDef = prepareTableDef();
configs.putObject('Table_DataId', tableDef);
engine.setData(tableDef, null);
configs.put('File_Name', 'test.csv');
const fileDef = engine.createDataDefinition('ファイル', 5, 'q_file', 'FILE');
configs.putObject('File_DataId', fileDef);
let files = new java.util.ArrayList();
files.add(engine.createQfile('1.txt', 'text/plain', 'テスト1'));
engine.setData(fileDef, files);
execute();
files = engine.findData(fileDef);
expect(files.size()).toEqual(2);
assertFile(files.get(0), '1.txt', 'text/plain');
assertFile(files.get(1), 'test.csv', 'text/tab-separated-values');
expect(files.get(1).getLength()).toEqual(0);
});
test('success', () => {
const tableDef = prepareTableDef();
configs.putObject('Table_DataId', tableDef);
const list = tableDef.createListArray();
const addRow = (string, decimal, date, select) => {
const newRow = list.addRow();
newRow.put('string', string);
newRow.put('decimal', decimal);
newRow.put('date', date);
newRow.put('select', select);
};
addRow('hogehoge', '123.45', '1975-06-30', 'true');
addRow('おはよう', '67.89', '2021-09-24', 'false');
engine.setData(tableDef, list);
configs.put('File_Name', 'テスト.csv');
const fileDef = engine.createDataDefinition('ファイル', 5, 'q_file', 'FILE');
configs.putObject('File_DataId', fileDef);
engine.setData(fileDef, null);
execute();
const files = engine.findData(fileDef);
expect(files.size()).toEqual(1);
const file = files.get(0);
assertFile(file, 'テスト.csv', 'text/tab-separated-values');
let text = '';
fileRepository.readFile(file, 'x-UTF-16LE-BOM', (line) => {
text += line + '\n';
});
expect(text).toEqual('hogehoge\t123.45\t1975-06-30\ttrue\n'
+ 'おはよう\t67.89\t2021-09-24\tfalse\n');
});
]]>