как экспортировать таблицу реагирования с расширяемыми строками в csv или excel?

есть два дня, когда я пытаюсь экспортировать CSV или excel из компонента своих таблиц в реакцию, и в конце я наконец нахожу ExcelentExport.js, я выбираю это, потому что он экспортирует из таблицы, а не из набора данных, и если вы хотите знать почему я выбираю это: я должен сказать, потому что у меня 120 таблиц, и мне нужно много времени, чтобы указать заголовок таблицы, формат данных, получаемых с сервера, такой

[
  {"id_group":"1","name":"Visitor","members":[],"total":"0","discount":"0"}, 
  {"id_group":"2","name":"Guest","members":[],"total":"0","discount":"0"}
]

теперь я не знаю, как мне использовать «Отличный экспорт» в реакции, также, если вы знаете лучшую библиотеку, которая может мне помочь, пожалуйста, укажите это, спасибо


person ghazaleh javaheri    schedule 16.03.2019    source источник


Ответы (1)


ExcellentExport предназначен для преобразования обычных таблиц HTML в CSV или XLS. Из того, что я вижу, у вас уже есть необработанные данные, поэтому вы можете просто преобразовать их напрямую, минуя React или ExcellentExport:

function convertToCSV(tableData, delimiter = ',') {
  if (!Array.isArray(tableData) || !tableData.length) {
    throw new Error('Table data should be a non-empty array of column/value rows');
  }
  
  var colNames = Object.keys(tableData[0]);
  var rows = tableData.map(rowData => {
    var row = [];
    for (var key in rowData) {
      // I noticed that members column is an array, not sure how you handle it
      // but here it joins the members with comma and wraps the whole thing in 
      // double quotes
      if (Array.isArray(rowData[key]) && rowData[key].length) {
        row.push('"' + rowData[key].join(',') + '"');
      } else {
        row.push(rowData[key]);
      }
    }
    return row.join(delimiter);
  });
  rows.unshift(colNames.join(delimiter));
  return rows.join("\n")
}

const csv = convertToCSV([
  {"id_group":"1","name":"Visitor","members":[],"total":"0","discount":"0"}, 
  {"id_group":"2","name":"Guest","members":[],"total":"0","discount":"0"}
])

console.info(csv)

person jayarjo    schedule 16.03.2019
comment
как мне записать это в файл? - person ghazaleh javaheri; 16.03.2019