概要
会社に提出する書類がいまだにエクセル管理+印刷提出なのでいらいらしています。
これをnode.jsでさくっと作りたいのでなんとかしてみます。
コード
exceljsを使用するのでインストールします。
[txt]
npm install exceljs
[/txt]
提出に使用する「交通費.xlsx」も同じ階層においておきます。「交通費精算書」シートと「勤怠などの不要なシート名★」シートも作成しておきます
同じ階層に「koutu.js」という名前でjsファイルを作成します。エンコードはUTF-8でないと文字化けして動かないので気をつけてください。
const Excel = require("exceljs"); // 交通費記入の実行 goKoutu(); // 他の勤怠も作りたくなるかもしれないので関数を切っておきます /** 交通費を記入する関数 */ function goKoutu(){ const workbook = new Excel.Workbook(); // 出勤日 const targetYmd = '1999-05-31'; // あらかじめ@で区切って用意しておく const main = ` 5/3@電車@自宅→自社@220 5/29@電車@自宅→自社@220 ` // 交通費.xlsxファイルを読み込む workbook.xlsx.readFile("交通費.xlsx").then(() => { const worksheet = workbook.getWorksheet("交通費精算書"); // 年度 const year = targetYmd.split('-')[0]; const month = targetYmd.split('-')[1]; const day = targetYmd.split('-')[2]; // 各種情報の記載 worksheet.getCell("G14").value = year; worksheet.getCell("J14").value = Number(month); worksheet.getCell("M14").value = Number(day); worksheet.getCell("X13").value = '社員名★'; //交通費データ(半角スペースは除いておきます) const koutuLines = main.replaceAll(' ','').split('\n'); console.log(koutuLines); // 処理行数 let targetRow = 1; for (i=0;i<koutuLines.length;i++) { if(koutuLines[i] == null || koutuLines[i] === ''){ // 処理アイテムなければ終了 continue; } // 区切り文字で配列に入れます const item = koutuLines[i].split('@'); // 記入内容作成 const koutuhi_day = Number(item[0].split('/')[0]) + '/' + String(item[0].split('/')[1]);//日付 const koutuhi_type = item[1];//交通手段 const koutuhi_remarks = item[2];//経路 const koutuhi_yen = item[3];//金額 // 指定のセルへの記入 const label = String(targetRow + 13);//13行目から交通費の記入欄の場合★ worksheet.getCell("A" + label).value = koutuhi_day worksheet.getCell("B" + label).value = koutuhi_type worksheet.getCell("C" + label).value = koutuhi_remarks worksheet.getCell("D" + label).value = koutuhi_yen // A列のセルに対して中央寄せ worksheet.getCell("A" + label).alignment = { vertical: "middle", horizontal: "center" }; // 行数の加算 targetRow++; } // 不要なシートの削除 workbook.removeWorksheet('勤怠などの不要なシート名★'); // ファイルを保存する workbook.xlsx.writeFile( year + '-' + month + "_交通費.xlsx"); }); }
コマンドプロンプト(cmd.exe)で実行すると「1999-05_交通費.xlsx」というファイルができていろいろ書かれているはず。
[bat]
cd ファイルへのフルパス
node koutu.js
[ ”, ‘5/3@電車@自宅→自社@220’, ‘5/29@電車@自宅→自社@220’, ” ]
[/bat]
おわり。