繁体   English   中英

如何在前端(TS、React)上将 CSV 转换和下载到 XLSX

[英]How to convert and download CSV to XLSX on front end (TS, React)

I have been able to convert a JSON response to CSV to be downloaded via the following function below after parsing the data and joining via a seperate function. 下面的 function 效果很好,并且可以以我需要的正确日语格式下载 CSV 文件,这就是“编码”object 是什么。 我似乎无法弄清楚的是如何将 JSON 数据转换为 xlsx 文件以在前端以类似的方式下载,或者在前端将以下 CSV 文件转换为 xlsx 以允许将同一文件下载为 xlsx 格式。 当我在 excel 中打开 CSV 文件时,我可以简单地保存为 xlsx 文件,它工作得很好。 有没有办法通过 JS/TS 在前端为基于 React 的 web 应用程序创建此功能? 我已经对此进行了研究,似乎网上的很多回复都是在 nodeJS 中转换它,但我希望纯粹在前端拥有这种转换和下载功能,因为我正在使用 create react 应用程序并通过一个axios 调用用于制作 CSV 和 xlsx 文件。

export const downloadCsv = async (data: string, fileName: string) => {
  const unicodeList = data.split('').map((x, i) => data.charCodeAt(i));
  const sjisArray = Encoding.convert(unicodeList, {
    to: 'SJIS', 
    from: 'UNICODE',
  });
  const blob = new Blob([new Uint8Array(sjisArray)], { type: 'text/csv'});
  const url = window.URL.createObjectURL(blob);
  const a = document.createElement('a');
  a.setAttribute('hidden', '');
  a.setAttribute('href', url);
  a.setAttribute('download', `${fileName}.csv`);
  document.body.appendChild(a);
  a.click();
  document.body.removeChild(a);
};

您可以使用xlsx package:
编辑: 沙盒

import XLSX from 'xlsx';

  const downloadxls = (data)=>{
    let ws = XLSX.utils.json_to_sheet(data);
    let wb = XLSX.utils.book_new();
    XLSX.utils.book_append_sheet(wb, ws, "sheet");
    let buf = XLSX.write(wb, {bookType:'xlsx', type:'buffer'}); // generate a nodejs buffer
    let str = XLSX.write(wb, {bookType:'xlsx', type:'binary'}); // generate a binary string in web browser
    XLSX.writeFile(wb, `myfilename.xlsx`);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM