Seet.js
なるものがSheetJSではないかと思われますがひとまず無視して話をします.
どのスコープでそのコードが実行されているのかその抜粋だけでは分かりませんので,data
に本当にデータが入っているかどうかは何かしら保証する必要があります.
確認なのですがJSソース中にscriptタグを書いているのですか?
それは他のスクリプトを読み込む方法として正しくありません.
モジュールか関数か何かで,show-sheet.js
から確実に変数data
にデータを受け取れるようにしないとlet data
に内容は入ってきません.
<script src="hoge.js"></script>
<script>
let data = hogehoge();//hoge.jsで定義した関数.
</script>
// ESModuleで書く例.type="module"が必要
import hogehoge from 'hoge.js';
let data = hogehoge();//hoge.jsで定義した関数
ついでなのですが(おそらくこの辺を参考にしたのだろうと思われますが),UTF-8へのBOMはExcelでもデータを取り込むときゴミが付く原因になりますので,付与しないでください(UTF-8では基本的に不要なものです).