前提・実現したいこと
サイト上にエクセルのダウンロードボタンを設置したいと思いSheet.jsを勉強中です。
記載のようなコードを書くと、エクセルファイルのダウンロードまでは出来ているのですが、ファイルを開こうとしてもデータが破損していて開けません。
何が原因なのでしょうか。
発生している問題・エラーメッセージ
ファイル形式、または拡張子が正しくありません。 ファイルが破損しておらず、ファイル拡張子とファイル形式が一致していることを確認してください。
ファイル形式はXLSXになっており、拡張子も.xlsxになっているため、破損していることが原因だと思うのですが、何が良くないのか、ファイルが開けないので分かりません。
該当のソースコード
html
<input type="button" id="xlsx" value="Excelファイル出力" onclick="doit()">
Javascript
function doit() { let wsData = [ ["ヘッダ1", "ヘッダ2"], ["値1", "値2"] ] let wb = XLSX.utils.book_new(); let sheet = XLSX.utils.aoa_to_sheet(wsData); XLSX.utils.book_append_sheet(wb, sheet, 'テストシート'); var write_opts = { bookType: 'xlsx', type: 'binary' }; var wb_out = XLSX.write(wb, write_opts); var blob = new Blob([s2ab(wb_out)], { type: 'application/octet-stream' }); saveAs(blob, 'テスト.xlsx'); } function s2ab(s) { var buf = new ArrayBuffer(s.length); var view = new Uint8Array(buf); for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF; return buf; }
試したこと
上記とは別に、下記のサイトの内容をコピーして丸々同じものを作成してみても、同じエラーがでます。
https://techacademy.jp/magazine/21073
※パソコンにエクセルが入っていないので、友達にサイトダウンロードしたファイルを送って確認してもらっています。ダウンロードする人のデバイスにエクセルが入ってないことは原因として考えにくいと思っているのですが、一応情報として。
まだ回答がついていません
会員登録して回答してみよう