Вход

Просмотр полной версии : Как создать и скачать xlsx на клиенте?


Kiten
24.11.2020, 23:56
Здравствуйте!
Подскажите пожалуйста, является ли данный код корректным, или в нем есть лишние операции:
import React, { Fragment } from 'react';
import xlsx from 'node-xlsx';
import download from 'downloadjs';

function TableDownload({ data }) {
return (
<Fragment>
<button onClick={_ => {
const qwerty = [[1, 2, 3], ['a', 'b', 'c']];
let buffer = xlsx.build([{ name: "mySheetName", data: qwerty }]).toString('base64');
download(atob(buffer), 'data.xlsx', { type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" });
}}>12345</button>
</Fragment>
);
}

export default TableDownload;
Все происходит на клиенте: создается файл, который затем скачивается без перезагрузки страницы. Все работает, но данные сначала конвертируются в строку "base64", а затем декодируются. Меня интересует, нет ли в коде лишних действий, и чтобы он "соответствовал традициям".
Это компонент React, но я думаю, что проблема не связана с особенностями React, поэтому я разместил ее в общий расзел.
Спасибо за внимание!