業務系システムでExcelを作成する処理はしばしばあるかと思いますが、実装すると結構大変だな、という経験から、APIを作ってみました。例えば私がよく触るkintoneなどでは、データは溜めておくことができますが、帳票出力する機能は標準では備えていない為、そのような場合に便利かなと思っています。せっかくなので、詳しい利用方法を解説していきます。
基本情報
料金
記事執筆時点で無料です。
制限
登録できるテンプレート数や容量に制限がありますので、詳しくはリポジトリの説明をご参照ください。
利用例
サンプルコード
利用例は以下のようになります。
// 受け取ったbase64データをデコードし、ダウンロードする const download = (base64) => { // 任意のファイル名でダウンロード const filename = 'created.xlsx'; const binary = atob(base64); const decoded_array = new Uint8Array(Array.prototype.map.call(binary, c => c.charCodeAt())); const decoded = new Blob([decoded_array], {type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}); const url = window.URL.createObjectURL(decoded); const a = document.createElement("a"); a.href = url; a.download = filename; a.click(); window.URL.revokeObjectURL(url); } await fetch("https://xlsx-creator.com/api/v1/form", { method: "POST", headers: { "Content-Type": "application/json", "X-XLSX-CREATOR-EMAIL": "your email", "X-XLSX-CREATOR-PASSWORD": "your password" }, body: JSON.stringify({ // form id you want to create "formId": "1", // set true if you want to convert excel to pdf "pdf": false, // json format data you want to input "data": { "cell": { "field1": { "value": "hello" }, "field2": { "value": "world" } }, "row": { "detail": { "value": [ { "filedInRow1-1": { "value": "value_1-1" }, "filedInRow1-2": { "value": "value_1-2" }, "filedInRow1-3": { "value": "value_1-3" } }, { "filedInRow2-1": { "value": "value_2-1" }, "filedInRow2-2": { "value": "value_2-2" }, "filedInRow2-3": { "value": "value_2-3" } } ] } } } }) }).then(async (resp) => { if (resp.status === 200) { const {base64} = await resp.json(); download(base64); } })
解説
解説すべき点としては、以下になるかと思います。
- headersにXLSX Creatorに登録したメールアドレス / パスワードを指定する
- bodyに対象のフォームID、入力するデータ内容をJSONで指定する
- テンプレートにはセルの名前を定義して、bodyで指定するデータ内容のkeyと対応させる
- サンプルコードの
field
が単一セルの名前に、detail
が行セルの名前にそれぞれ対応しています
- サンプルコードの
最後に
不具合や要望がありましたら、TwitterのリプかDM、またはお問い合わせのページからご連絡下さい。