表題の件で質問お願い致します。
サーバーサイド側で以下のコードからExcelファイルを出力しています。
流れとしてはひな形となるExcelファイルをコピーし、システムの日付を付与して新しいファイルとして出力。その後出力したファイルを読み込み、指定のセルに値を書き込むという流れです。
目的はサーバー側で作成、格納されているExcelファイルをクライアント側からもダウンロードさせたいと考えています。
その際にファイル名や保存先も任意で決めれるのが理想形です。
Excelファイル作成部分
javascript
1const fs = context.global.fs; 2const moment = context.global.moment; 3 4 5//年、月、日 情報取得 6var date = moment().format('YYYYMMDD') 7var year = moment().year(); 8var month = moment().month() + 1; 9var day = moment().date(); 10 11// コピー元ファイル(ひな形になるファイル) 12const src = 'C:\Users\Desktop\test\test_excel.xlsx'; 13 14//コピー先ファイル 15const dest = "C:\Users\Desktop\test\" + month + "月\" + date + ".xlsx"; 16 17//ファイル作成 18fs.copyFileSync(src, dest);
Excel書き込み部分
js
1const XlsxPopulate = context.global.xlsxpopulate; 2const moment = context.global.moment; 3 4//年、月、日 情報取得 5var date = moment().format('YYYYMMDD') 6var year = moment().year(); 7var month = moment().month() + 1; 8var day = moment().date(); 9 10//テスト用書き込み変数 11var test1 = '日本語'; 12var test2 = 'English'; 13var test3 = 100; 14var test4 = 0.5; 15var test5 = 2000; 16 17XlsxPopulate.fromFileAsync('"C:\Users\Desktop\test\" + month + "月\" + date + ".xlsx"') 18.then(book => { 19 const sheet1 = book.sheet("Sheet1") 20 sheet1.cell("A2").value(test1) 21 sheet1.cell("B4").value(test2) 22 sheet1.cell("A10").value(test3) 23 sheet1.cell("B11").value(test4) 24 sheet1.cell("D14").value(test5) 25 sheet1.cell("H4").value(2000) 26 book.toFileAsync('"C:\Users\Desktop\test\" + month + "月\" + date + ".xlsx"'); 27 }) 28
サイトを参考にさせて頂きコピペですが試しに以下のコードを記入しました
参考サイト
以下のコードでは出力する内容は変数contentに直接記述しており、ファイル名なども固定になっています。
的外れな質問なのですが、ダウンロードしたい内容を”Excelファイル”に指定することは可能でしょうか?
またその際にダウンロードされるパスやファイル名を任意で指定する方法はありますでしょうか?
もしこのやり方では不可能であれば他の案もアドバイスを頂きたいです。
知識も浅くそもそも出来るのかという事すら分からないので的外れな質問かと思いますが宜しくお願い致します。
html
1<!doctype html> 2<html lang="ja"> 3 <head> 4 <meta charset="utf-8"> 5 <title>Download Sample</title> 6 </head> 7 <body> 8 <script type='text/javascript'> 9 function handleDownload() { 10 var content = 'あいうえお'; 11 var blob = new Blob([ content ], { "type" : "text/plain" }); 12 13 if (window.navigator.msSaveBlob) { 14 window.navigator.msSaveBlob(blob, "test.txt"); 15 16 // msSaveOrOpenBlobの場合はファイルを保存せずに開ける 17 window.navigator.msSaveOrOpenBlob(blob, "test.txt"); 18 } else { 19 document.getElementById("download").href = window.URL.createObjectURL(blob); 20 } 21 } 22 </script> 23 <a id="download" href="#" download="test.txt" onclick="handleDownload()">ダウンロード</a> 24 </body> 25</html>
また、以下の例でも試したのですが画像のようなエラーとなり成功しませんでした
(ブラウザはFireFoxです)
html
1<a href="C:\Users\Desktop\test\test_excel.xlsx" download="downloadtest.xlsx">ダウンロード</a>
追記
上記の記述方法ではなく以下のように書き換えてみましたがリンクを押しても反応なしでした
しかしfile:///C:/sample/test_excel.xlsx←この部分をアドレスバーに入力するとファイルのダウンロードのダイアログが出ます
htmlでの記述内容が足りないのでしょうか?
html
1<a href="file:///C:/sample/test_excel.xlsx" download="downloadtest.xlsx">ダウンロード</a>
回答1件
あなたの回答
tips
プレビュー