以下の私の方法よりも JavaScript を使用して .CSV ファイルを作成するためのより良い方法をお勧めできますか? ここで以前のスレッドを検索した後に見つけた最良の方法でした。以下に示すように、データ配列に行のロードとロードを追加し始めるまで、すべてはほとんど問題ありませんでした。
var data =
[
["Thermal Store Summary:"] + "\n",
["Cylinder:", "", cylinder, "", cylinder2] + "\n",
["Heat Exchanger:", "", heatex, "", heatex2] + "\n",
["Immersion Heaters:", "", heater, "", heater2] + "\n",
**// About 30 or so entries with no problem, didn't work with any more **
];
以下は、選択メニュー オプションの ID と値が格納される変数です。
var cylinder = document.getElementById("heatex").options[document.getElementById("heatex").selectedIndex].id;
var heatex = document.getElementById("heatex").options[document.getElementById("heatex").selectedIndex].id;
var heater = document.getElementById("heater").options[document.getElementById("heater").selectedIndex].id;
var cylinder2 = document.getElementById("cylinder").options[document.getElementById("cylinder").selectedIndex].value;
var heatex2 = document.getElementById("heatex").options[document.getElementById("heatex").selectedIndex].value
var heater2 = document.getElementById("heater").options[document.getElementById("heater").selectedIndex].value
そして、現在 .CSV ファイルを作成するコードは次のとおりです。
var csvContent = "data:text/csv;charset=utf-8,";
data.forEach
(
function(infoArray, index)
{
dataString = infoArray;
csvContent += index < infoArray.length ? dataString+ "" : dataString;
}
);
encodedUri = encodeURI(csvContent);
ダウンロード自体は最後に自動ダウンロードさせていたのですが、30件以上追加しようとすると停止してしまいました。コードを別の関数 (ボタンで呼び出される) に移動し、「ファイルがない」ために失敗するダウンロードを強制しました。
function download_csv()
{
var link = document.createElement("a");
link.setAttribute("href", encodedUri);
link.setAttribute("download", "quote.csv");
link.click();
}
理想的には私の現在のソリューションの修正であるだけでなく、新しい方法を一緒に試してみることもできます。