【Node.js】交通費のエクセルへの記入を自動化したい

Node
この記事は最新更新日から、1年以上経過しています。

概要

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

下記のような内容のエクセルができます。

おわり。