let file = null; if (e.target.files) file = e.target.files[0]; elseif (e.dataTransfer.files) file = e.dataTransfer.files[0]; elsereturn;
const file = e.target.files[0]; const reader = new FileReader();
const loadFunc = async () => { if (this.check_file_extension(file.type)) return let lines = reader.result // 改行コードのCRLFをLFに変更 lines = lines.replace(/\r\n/g, "\n"); lines = lines.split('\n'); // ヘッダ let header = lines.shift(); header = header.split(','); // バリデーション if (this.column_count_is_not_2(header.length, 1)) return; for (let value of header) { value = value.trim(); if (!['hoge1', 'hoge2'].includes(value)) { console.log('[1行目] 正しいカラム名を入力してください。エラーのカラム名:' + value); var obj = document.getElementById('file_input_expense'); obj.value = ''; returntrue; } }
// コンテンツ // バリデーション let row_num = 1; for (let line of lines) { row_num += 1; line = line.split(','); if (line.length <= 1) continue; if (this.column_count_is_not_2(line.length, row_num)) return; } // 取り出し let csv_list = [] let line_data = {}; for (let line of lines) { line = line.split(','); // 以下の1行がないと最終行の空白行で不具合が起きる可能性がある if (line.length <= 1) continue; line.forEach((value, i) => { line_data[header[i]] = value; }); csv_list.push(line_data) } var obj = document.getElementById('file_input_expense'); obj.value = ''; };