52

JavaScript オブジェクト セットを CSV 形式に変換しようとしています。

オンライン JSON パーサーhttps://jsonformatter.org/json-parserに入れると、私の Javascript オブジェクトについてのアイデアを得ることができます

これは私がそれを解決しようとした方法です...しかし、それは失敗しました.. http://jsfiddle.net/fHQzC/11/

値「term」に対応する値全体と対応するタイトルをCSV形式に取り込もうとしています

の期待される出力は次のようになります

Time,Dec 9, 2012 
News,Germany,election, Egypt,Revolution, Japan, Earthquake
Person,Obama, Beckham
Title,Pearce Snubs Beckham                                
Time,Dec 5, Birthday
Person, Lebron James
News,Italy,Euro 2012 Final
Title-Heats National Champions
                              

そして、Excelシートでcsvファイルをダウンロードすることは可能ですか?私がStackoverflowで見つけたものは本当に役に立ちませんでした...

4

10 に答える 10

29

あなたはとして試すことができます

$(document).ready(function () {

        // Create Object
        var items = [
              { name: "Item 1", color: "Green", size: "X-Large" },
              { name: "Item 2", color: "Green", size: "X-Large" },
              { name: "Item 3", color: "Green", size: "X-Large" }];

        // Convert Object to JSON
        var jsonObject = JSON.stringify(items);

        // Display JSON
        $('#json').text(jsonObject);

        // Convert JSON to CSV & Display CSV
        $('#csv').text(ConvertToCSV(jsonObject));
    });

および関数 ConvertToCSV

// JSON to CSV Converter
        function ConvertToCSV(objArray) {
            var array = typeof objArray != 'object' ? JSON.parse(objArray) : objArray;
            var str = '';

            for (var i = 0; i < array.length; i++) {
                var line = '';
                for (var index in array[i]) {
                    if (line != '') line += ','

                    line += array[i][index];
                }

                str += line + '\r\n';
            }

            return str;
        }

ソース

于 2012-06-29T06:34:01.810 に答える
7

以下のコードは、JSON 配列をファイルとして csv に変換してダウンロードします。

 function exportJSONToCSV(objArray) {
    var arr = typeof objArray !== 'object' ? JSON.parse(objArray) : objArray;
    var str =
      `${Object.keys(arr[0])
        .map((value) => `"${value}"`)
        .join(',')}` + '\r\n';
    var csvContent = arr.reduce((st, next) => {
      st +=
        `${Object.values(next)
          .map((value) => `"${value}"`)
          .join(',')}` + '\r\n';
      return st;
    }, str);
    var element = document.createElement('a');
    element.href = 'data:text/csv;charset=utf-8,' + encodeURI(csvContent);
    element.target = '_blank';
    element.download = 'export.csv';
    element.click();
  }
于 2020-11-03T13:14:21.547 に答える
1

mightybruno の回答に似ていますが、必要に応じて、(joinステートメントを関数の後半に移動することにより) ヘッダーとコンテンツに個別にアクセスできます。

function objToCsv(data) {
    const headers = Object.keys(data[0]).join();
    const content = data.map(r => Object.values(r).join());
    return [headers].concat(content).join("\n");
}
于 2020-09-18T00:31:44.863 に答える