概要
会社に提出する書類がいまだにエクセル管理+印刷提出なのでいらいらしています。
これを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]
おわり。


