json к CSV запятая вопрос javascript - PullRequest
0 голосов
/ 16 марта 2020

Я хотел бы знать, как преобразовать json в csv в javascript, код ниже работает, но в примере сценария, если заголовок details имеет значения, разделенные запятой service, finance, тогда значение будет сдвинуто к следующему столбцы

  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];
        }
        console.log(str, line);
        str += line + '\r\n';
    }
    return str;
}

  exportCSV =(tabledata) =>{
    const items  = tabledata;
    const fileTitle = "Sample";
    // Convert Object to JSON
    var jsonObject = JSON.stringify(items);
    var csv = this.convertToCSV(jsonObject);
    console.log(csv);
    var exportedFilenmae = fileTitle + '.csv' || 'export.csv';
    var blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' });
    if (navigator.msSaveBlob) { // IE 10+
        navigator.msSaveBlob(blob, Sample Report);
    } else {
        var link = document.createElement("a");
        if (link.download !== undefined) { // feature detection
            // Browsers that support HTML5 download attribute
            var url = URL.createObjectURL(blob);
            link.setAttribute("href", url);
            link.setAttribute("download", "Sample Report");
            link.style.visibility = 'hidden';
            document.body.appendChild(link);
            link.click();
            document.body.removeChild(link);
        }
    }
}

<button onClick="exportCSV(tabledata)">Download as CSV</button>


const tabledata = [
  ["id", "details", "status"],
  [1, "service,finance", "Active"],
  [2, "service", "Inactive"],
  [3, "member,service,finance", "Active"]
]

Ожидаемый результат: enter image description here

Ответы [ 2 ]

0 голосов
/ 11 апреля 2020

L oop через данные и заменить их.

if ((data + '').includes(',')) {
    data = '\"' + data + '\"';
}
0 голосов
/ 16 марта 2020

CSV-записи, содержащие специальные символы, должны быть заключены в кавычки.

Если специальный символ не является ", в этом случае его необходимо представить как "".

Не пытайтесь написать свой собственный генератор CSV . Формат не так прост, как кажется. Используйте надежную, поддерживаемую библиотеку, такую ​​как Papa Parse

const exportCSV = (tabledata) => {
  var csv = Papa.unparse(tabledata);
  console.log(csv);
}

const tabledata = [
  ["id", "details", "status"],
  [1, "service,finance", "Active"],
  [2, "service", "Inactive"],
  [3, "member,service,finance", "Active"]
]
<script src="https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.1.0/papaparse.min.js"></script>
<button onClick="exportCSV(tabledata)">Download as CSV</button>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...