#javascript #json #excel #xlsx #worksheet
Вопрос:
У меня есть массив объектов (JSON) в JS, и я хочу преобразовать его в таблицу Excel. В данных JSON есть некоторые пары ключ-значение, которые я не хочу конвертировать в Excel, например, Excel не должен содержать информацию о годе, как показано ниже (ПОЖАЛУЙСТА, ЗАПУСТИТЕ HTML-КОД, ЧТОБЫ УВИДЕТЬ ТРЕБУЕМЫЙ ВЫВОД EXCEL):
Данные JSON:
[
{
car: "Range Rover",
color: "silver",
year: "2021"
},
{
car: "Benz",
color: "black",
year: "2019"
},
{
car: "Toyota",
color: "silver",
year: "2020"
}
]
Просмотр Excel (запустите фрагмент):
<html>
<body>
<table>
<tr>
<th>car</th>
<th>color</th>
</tr>
<tr>
<td>Range Rover</td>
<td>silver</td>
</tr>
<tr>
<td>Benz</td>
<td>black</td>
</tr>
<tr>
<td>Toyota</td>
<td>silver</td>
</tr>
</table>
</body>
</html>
Как я могу добиться этого, используя XLSX в JS?
Ответ №1:
Здесь вы можете сделать несколько вещей.
- После анализа ваших данных JSON вы можете сохранить их на листе xlsx, изменить свойство worksheet !ref на нужный диапазон, а затем добавить этот лист в книгу xlsx.
let file = fs.readFileSync('test.json', 'utf-8');
let data = JSON.parse(file);
var wb = xlsx.utils.book_new();
var ws = xlsx.utils.json_to_sheet(data);
ws['!ref'] = 'A1:B4';
xlsx.utils.book_append_sheet(wb, ws, 'Sheet 1');
xlsx.writeFile(wb, 'test1.xlsx');
- Отфильтруйте нужные вам свойства из ваших данных JSON в отдельный массив, а затем добавьте их в файл.
let file = fs.readFileSync('test.json', 'utf-8');
let data = JSON.parse(file);
var wb = xlsx.utils.book_new();
let dataArray = [];
data.forEach(d => {
dataArray.push({"car": d.car, "color": d.color});
});
var ws = xlsx.utils.json_to_sheet(dataArray);
console.log(ws);
xlsx.utils.book_append_sheet(wb, ws, 'Sheet 1');
xlsx.writeFile(wb, 'test2.xlsx');
Проверка документации по служебным функциям также может быть полезной.