2017-08-10 15 views
0

にjavascript配列私が知っている、ここでこのトピックに関する質問の何百もあるが、私はまだ検索の日後に満足のいく答えを見つけることができませんでした:エクスポート2D Excelシート

私はjavascript配列2Dを持っています、私はExcelシートとしてダウンロードしたい。ここで

は、私がこれまでに得たコードとフィドルです:

https://jsfiddle.net/3an24jmw/7/

ダウンロード作品が、私はしようとする日後に解決することができませんでしたいくつかの問題がある:

    は、
  1. すべての項目はExcelシートの最初の列に終わります.Excelはデータの一部として要素を区切る "、"を解釈するためです。 Excelが理解できるように要素をどのように分けることができますか?
  2. ファイル名は暗号コードです。ファイル名はどのように設定できますか?
  3. ダウンロードしたファイルの末尾には、.xls.xls.xls)というダブルが付いています。どのように単一の.xlsを得ることができますか?
  4. Excelは、ファイルが破損しているか、安全でない可能性があるたびに通知します。これをどうやって防ぐのですか?

これらの質問のいずれかの助けに感謝します。

exportToCsv = function() { 
    var CsvString = ""; 
    Results.forEach(function(RowItem, RowIndex) { 
     RowItem.forEach(function(ColItem, ColIndex) { 
      CsvString += ColItem + ','; 
     }); 

     CsvString += "\r\n"; 
    }); 

    window.open('data:application/vnd.ms-excel,' + encodeURIComponent(CsvString)); 
} 

UPDATE

私はちょうど1. 2.と4. csvvnd.ms-excelを交換することによって解決することができることを、偶然見つけました。

ファイルはもう.xlsになりませんが、問題なくExcelでcsvを開き、意図したように動作させることができます。

残っている問題はファイル名だけです!

UPDATE 2

は、最後に検索し、しようとの2つのフル稼働日後、私は同じ問題に誰を助けるために、ここで共有したい解決策を見つけた:

は単純に含まinvisible <a>要素は、download="somedata.csv"属性を使用してファイルに有用な名前を定義します。

https://jsfiddle.net/3an24jmw/25/

答えて

0

Finalyを検索し、しようとの2つのフル稼働日後、私は同じ問題に誰を助けるために、ここで共有したい解決策を見つけました=「somedata.csv」属性のダウンロードを使用してファイルの有用な名前を与える見えない要素、:ここで

で私の最終的かつ完全に機能フィドル:

https://jsfiddle.net/3an24jmw/25/

var Results = [ 
["Col1", "Col2", "Col3", "Col4"], 
["Data", 50, 100, 500], 
["Data", -100, 20, 100], 
]; 

exportToCsv = function() { 
    var CsvString = ""; 
    Results.forEach(function(RowItem, RowIndex) { 
    RowItem.forEach(function(ColItem, ColIndex) { 
     CsvString += ColItem + ','; 
    }); 
    CsvString += "\r\n"; 
    }); 
    CsvString = "data:application/csv," + encodeURIComponent(CsvString); 
    var x = document.createElement("A"); 
    x.setAttribute("href", CsvString); 
    x.setAttribute("download","somedata.csv"); 
    document.body.appendChild(x); 
    x.click(); 
} 
0

Excelは、CSVのために期待するセパレータは、リストの区切りのためのあなたのシステムのロケール設定によって異なります。

は、ここに私の最終的かつ完全に機能フィドルです。 最初の行に"sep=,"を追加することで、どのセパレータをCSVファイルに使用するかをヒントできます。あなたのケースでの使用には を使用することができます

は、単に、次のとおりですvar CsvString = '"sep=,"\r\n';

+0

提案していただきありがとうございますが、それはあなたのためにフィドルで機能しましたか? 私はそれを試してみると、シートの最初の行はsep =、 –

+0

に置き換えられます。間違って二重引用符を間違えてしまいました。今修正されました。 – Bas

関連する問題