つまりエクセルのテンプレートファイルを読み込んで日本語を含む値を設定した後ファイルに出力するということがやりたい。
exceljs が日本語も行けていい感じ。
ただし現状では画像貼り付けが非常に困難なようなので注意
サンプルソース
指定したURLにアクセスしたらエクセルをダウンロードするという雑なコード
/* eslint-env node, express */ const excel = require("exceljs") const express = require("express") const router = express.Router() // const fs = require("fs") /* GET home page. */ router.get("/", /* @callback */ function (req, res, next) { const templateFilePath = "public/data/template.xlsx" const outputFileName = "public/data/out.xlsx" var workbook = new excel.Workbook() workbook.xlsx.readFile(templateFilePath).then(function () { var sheet1 = workbook.getWorksheet(1) console.log(sheet1.getCell(2, 2).value) sheet1.getCell(3, 2).value = "テンプレートから出力テスト" workbook.xlsx.writeFile(outputFileName).then(function() { console.log("write ok!") res.download(outputFileName) // fs.unlink(outputFileName, function (err) { // if (err) { // console.log(err) // } // }) }) }) // res.render("box", { title: "Box Demos" }) }) module.exports = router
読み込むファイル
出力されたファイル
参考
getCell(行, 列)となっているので注意
コメントアウト部分はダウンロード後にファイルを消したかったんだけどうまくいかなかった。
http://qiita.com/hnakamur/items/392f66e3dbeec9ae9d00
https://github.com/guyonroche/exceljs
http://m-shige1979.hatenablog.com/entry/2015/12/22/080000
調べた限りでは画像貼り付けができない模様。
ウェブでやるならApache Poi(Java)を使用するしかないか...
node.jsからjavaを呼び出したりもできるけどやめておいた方がいいかと