前提・実現したいこと
APIからbase64でエンコードされたデータが返ってきます。
ブラウザ上にあるリンクを押すとExcelファイルがダウンロードされるようにしたいです。
発生している問題
.xlsxでダウンロードはできるのですが、そのファイルを開くとExcelになっておらず、中身は以下のような文字列が入っています。
##0#########"¥"#,##0;[Red]"¥"\-#,##0#########"¥"#,##0.00;"¥"\-#,##0.00#########"¥"#,##0.00;[Red]"¥
ソースコード
HTML
1<a id="download" download="result.xlsx" onclick="test_download()">ダウンロード</a> 2
javascript
1 2function test_download() 3{ 4 $.ajax({ 5 url : URL, 6 type : "POST", 7 dataType: 'json', 8 data: {"test": "test"}, 9 }) 10 .then( 11 function (data,textStatus,jqXHR) { 12 var data2 = JSON.stringify(data); 13 var data3 = JSON.parse(data2); 14 var data4 = data3["data"]; 15 test(data4); 16 17 }, 18 function () { 19 alert("fail"); 20 }); 21} 22 23function test(bs64) { 24 var content = bs64; 25 var mimeType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; 26 var name = 'result.xlsx'; 27 28 var result = window.atob(bs64.replace(/^.*,/, '')); 29 var bom = new Uint8Array([0xEF, 0xBB, 0xBF]); 30 var blob = new Blob([ bom, result ], { type : mimeType }); 31 32 var a = document.getElementById('download'); 33 a.href = window.URL.createObjectURL(blob); 34} 35 36
補足情報(FW/ツールのバージョンなど)
IE11(safariのユーザーエージェントで選択)
macOS High Sierra
LibraOffice
コードをミスっていて二回リンクを押さないとダウンロードされませんが、今知りたいのはExcelファイルの生成についてなのでスルーしていただけると幸いです。
不慣れで申し訳ありません。よろしくお願いいたします。
この質問の投稿者はすでに退会しているため、質問者からの返信がない点にご留意ください。
回答1件
この質問の投稿者はすでに退会しているため、質問者からの返信やベストアンサーの選定がない点にご留意ください。
あなたの回答
tips
プレビュー