kintone上[xlsx-populate]を使用して、エクセルファイルの読み書き方法

お世話になっております。

kintone上xlsx-populateを使用して、
エクセルファイルの読み書きをしたいです。
サンプルプログラムを教えていただけますと助かります。

下記はやりたい内容です。
kintoneの添付ファイルフィールドからアップロードしたエクセルを読み込み、エクセルに値を設定、出力したいです。
[Sheetjs]ではなく書式を保持できるライブラリ[xlsx-populate]を使用したいです。

ご教示いただけますと幸いです。

ぽーさん

テンプレート用の添付ファイルを他のアプリに保存しています。

超適当な回答になりますが。。。参考まで

 

(function() {
    'use strict';
    kintone.events.on('app.record.detail.show', function(event) {

        // スペースフィールドにボタン設置
        const sp = kintone.app.record.getSpaceElement("spBtn");
        const btn = document.createElement("button");
        btn.textContent = "xlxPopulate";
        sp.appendChild(btn);
        let fileNameSource = event.record.テンプレートの説明.value;
        let extension = fileNameSource.substring(fileNameSource.lastIndexOf("."));
        let exportFileName = event.record.出力ファイル名.value;

        // ボタンクリック
        btn.addEventListener("click", async () => {
            const fileKey = await kintone.api(
                kintone.api.url("/k/v1/record.json", true),
                "GET", {
                    app: kintone.app.getLookupTargetAppId("テンプレート"),
                    id: event.record.テンプレート.value,
                }
            );
            const url =location.origin+"/k/v1/file.json?fileKey=" +fileKey.record.添付ファイル.value[0].fileKey;


            // ファイルダウンロード 
            const req = new XMLHttpRequest();
            req.open("GET", url);
            req.setRequestHeader("X-Requested-With", "XMLHttpRequest");

            req.responseType = "arraybuffer";
            // テンプレート読み込み
            req.onload = async (e) => {

                const wb = await XlsxPopulate.fromDataAsync(req.response);
                const ws = wb.sheet(0);
                // セル操作
                ws.cell('AB1').value("write somethine here");
                ws.cell('A3').value("write somethine here2");




                // ダウンロード(SaveAsモジュール)
                const wbout = await wb.outputAsync();
                const blob = new Blob([wbout], {
                    type: 'application/octet-stream'
                });

                const output_filename = exportFileName + extension;
                saveAs(blob, output_filename);
            };




            req.send();
        });

        
        return event;


    });
})();

SAI

お世話になっております。

サンプルコードありがとうございました。

サンプルコードを使ってみたところ、「xlxPopulate」のボタン押下際に、

「 ReferenceError: XlsxPopulate is not defined」というエラーが発生しました。
XlsxPopulateをkintone上で使用するためには、XlsxPopulate用のライブラリが必要でしょうか。

下記のライブラリをURL指定で追加していますが、エラーの内容が変わりませんでした。

https://cdnjs.com/libraries/xlsx-populate

https://cdnjs.cloudflare.com/ajax/libs/xlsx-populate/1.21.0/xlsx-populate.min.js

ご教示いただけますと幸いです。

ぽーさん~

僕は実際参照していたjs
最後のやつは先ほど送っていたコードとなります

https://cdnjs.cloudflare.com/ajax/libs/xlsx-populate/1.21.0/xlsx-populate.min.js

https://cdn.jsdelivr.net/npm/file-saver@2.0.5/dist/FileSaver.min.js

SAI

早急の対応ありがとうございました。

おかげさまで問題が解決できました。

ありがとうございました。

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。