TssGrid 例: Excel(xlsx)出力 サンプル + ExcelJS
xlsx は zip ベースのバイナリ形式なので
コアには入れず(軽量を保つ方針)、
サンプルで外部ライブラリ ExcelJS(MIT)と連携します。CDN を
<script> で読むだけ=
ノービルドのまま。
CSV と違い、
数値は“数値のまま”・
太字ヘッダ・
¥書式・
ヘッダ行固定・
列幅まで付けられます(Excelで集計・並べ替えがそのまま効く)。下のボタンで
.xlsx をダウンロード。
読込(取り込み)は excel-import.html。
差し込み(要点)
// <script src="…/exceljs@4.4.0/dist/exceljs.min.js" integrity="sha384-…" crossorigin></script>
const wb = new ExcelJS.Workbook();
const ws = wb.addWorksheet('在庫');
ws.columns = [
{ header:'品名', key:'name', width:18 },
{ header:'数量', key:'qty', width:10 },
{ header:'単価', key:'price', width:12, style:{ numFmt:'¥#,##0' } },
{ header:'金額', key:'amount', width:14, style:{ numFmt:'¥#,##0' } },
];
ws.getRow(1).font = { bold:true }; // 太字ヘッダ
ws.views = [{ state:'frozen', ySplit:1 }]; // ヘッダ行固定
grid.getRows().forEach(r => ws.addRow({ // 数値は Number で入れる
name:r.品名, qty:+r.数量||0, price:+r.単価||0, amount:(+r.数量||0)*(+r.単価||0),
}));
const buf = await wb.xlsx.writeBuffer(); // → Blob → ダウンロード