2022-11-04 https://support.questetra.com/bpmn-icons/converter-tabletoexcelcsv/ https://support.questetra.com/ja/bpmn-icons/converter-tabletoexcelcsv/ This item 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); expect(execute).toThrow('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; charset=UTF-8', 'テスト1')); engine.setData(fileDef, files); execute(); files = engine.findData(fileDef); expect(files.size()).toEqual(2); assertFile(files.get(0), '1.txt', 'text/plain; charset=UTF-8'); assertFile(files.get(1), 'test.csv', 'text/tab-separated-values; charset=UTF-16'); 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; charset=UTF-16'); const text = fileRepository.readFile(file, 'x-UTF-16LE-BOM'); expect(text).toEqual('hogehoge\t123.45\t1975-06-30\ttrue\n' + 'おはよう\t67.89\t2021-09-24\tfalse'); }); ]]>