質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

0回答

1085閲覧

サーバーからxlsxファイルをブラウザに送り,ブラウザに反映させたい

mote

総合スコア128

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2019/04/23 07:43

編集2019/05/02 08:22

↓Node.js

js

1let id = setInterval(function(){ 2 cl() ; 3 flag++ ; 4 if(flag > item){  5 clearInterval(id);  6 console.log("fin") ; 7 let file = fs.readFileSync("./Test.xlsx") ; 8 socket.emit("fin",file) ; 9}}, 5000);

上のようにローカルにある"Test.xlsx"というエクセルファイルをブラウザに反映させたい(ユーザーがダウンロード
出来るように)のですが,ブラウザでは arrayBuffer と出てしまいます.

js

1XlsxPopulate.fromFileAsync("./kajino.xlsx") 2 .then(book => { 3 let Anum = 4 ; 4 const sheet1 = book.sheet("シート1") 5 for(let i=0 ;i<array.length;i++){ 6 sheet1.cell("A"+Anum).value(array[i]) ; 7 sheet1.cell("B"+Anum).value(arrayc[i]) ; 8 Anum++ 9 } 10 sheet1.cell("N2").value(N2) 11 sheet1.cell("C4").value(C4) 12 sheet1.cell("C16").value(C16) 13 sheet1.cell("C7").value(C7) 14 sheet1.cell("C13").value(C13) 15 sheet1.cell("D2").value(D2) 16 sheet1.cell("D8").value(D8) 17 sheet1.cell("D12").value(D12) 18 sheet1.cell("E6").value(E6) 19 sheet1.cell("E10").value(E10) 20 sheet1.cell("E14").value(E14) 21 sheet1.cell("G4").value(G4) 22 sheet1.cell("J4").value(J4) 23 sheet1.cell("M4").value(M4) 24 sheet1.cell("G5").value(G5) 25 sheet1.cell("J5").value(J5) 26 sheet1.cell("M5").value(M5) 27 sheet1.cell("G6").value(G6) 28 sheet1.cell("J6").value(J6) 29 sheet1.cell("M6").value(M6) 30 sheet1.cell("G7").value(G7) 31 sheet1.cell("J7").value(J7) 32 sheet1.cell("M7").value(M7) 33 sheet1.cell("G8").value(G8) 34 sheet1.cell("J8").value(J8) 35 sheet1.cell("M8").value(M8) 36 sheet1.cell("G9").value(G9) 37 sheet1.cell("J9").value(J9) 38 sheet1.cell("M9").value(M9) 39 sheet1.cell("G10").value(G10) 40 sheet1.cell("J10").value(J10) 41 sheet1.cell("M10").value(M10) 42 sheet1.cell("G11").value(G11) 43 sheet1.cell("J11").value(J11) 44 sheet1.cell("M11").value(M11) 45 sheet1.cell("G12").value(G12) 46 sheet1.cell("J12").value(J12) 47 sheet1.cell("M12").value(M12) 48 sheet1.cell("G13").value(G13) 49 sheet1.cell("J13").value(J13) 50 sheet1.cell("M13").value(M13) 51 sheet1.cell("G14").value(G14) 52 sheet1.cell("J14").value(J14) 53 sheet1.cell("M14").value(M14) 54 sheet1.cell("G15").value(G15) 55 sheet1.cell("J15").value(J15) 56 sheet1.cell("M15").value(M15) 57 if(flag==6){ 58 sheet1.cell("D20").value(redbox.length) ; 59 sheet1.cell("E20").value(blackbox.length) ; 60 61 } 62 book.toFileAsync("./Test.xlsx") 63 64 }) ;

このようにローカルに落とし込んでから送ろうとしています.

ブラウザ側のコードは,

js

1socket.on("fin",(fin)=>{ 2 let reader = new FileReader(); 3 let newfile = reader.readAsArrayBuffer(fin); 4 let end = document.getElementById("fin") ; 5 end.innerHTML= newfile ; 6}) ;

このように"fin"にサーバーから格納して送ろうとしているのですが,
エラー(arraybuffer)が出てきてしまいます.

何か変換をしなければならないと思うのですが,
分かりません...

どなたかよろしくおねがいたします.
また,ローカルにおとし込まずに直接ブラウザに保存反映させる方法も更に教えていただけると嬉しいです.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問