【XLSX Creator】JSONデータからExcelを作成する無料API

【XLSX Creator】JSONデータからExcelを作成する無料API
                 
最終更新日から90日以上経過しています。

業務系システムで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、またはお問い合わせのページからご連絡下さい。

IT系の雑記カテゴリの最新記事