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

Javascript 如何在前端将CSV转换并下载到XLSX(TS、React),javascript,reactjs,excel,typescript,csv,Javascript,Reactjs,Excel,Typescript,Csv,在解析数据并通过单独的函数连接之后,我已经能够将JSON响应转换为CSV,以便通过下面的函数下载。下面的功能非常有效,CSV文件可以以我需要的正确的日语格式下载,这就是“编码”对象。我似乎不知道如何将JSON数据转换为xlsx文件,以便在前端以类似的方式下载,或者如何将下面的CSV文件转换为前端的xlsx,以便将相同的文件下载为xlsx格式。当我在excel中打开CSV文件时,我只需将其另存为xlsx文件,它就可以正常工作。有没有办法通过JS/TS在前端为基于React的web应用程序创建此功能

在解析数据并通过单独的函数连接之后,我已经能够将JSON响应转换为CSV,以便通过下面的函数下载。下面的功能非常有效,CSV文件可以以我需要的正确的日语格式下载,这就是“编码”对象。我似乎不知道如何将JSON数据转换为xlsx文件,以便在前端以类似的方式下载,或者如何将下面的CSV文件转换为前端的xlsx,以便将相同的文件下载为xlsx格式。当我在excel中打开CSV文件时,我只需将其另存为xlsx文件,它就可以正常工作。有没有办法通过JS/TS在前端为基于React的web应用程序创建此功能?我已经对此进行了研究,似乎很多在线响应都是在nodeJS中进行转换,但我希望在前端有这种转换和下载功能,因为我正在使用create react app,并通过axios调用检索JSON数据,以用于制作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);
};
您可以使用package:
编辑:


这是否直接接收JSON数据?它将如何格式化?@AlexAkshajMody我想它应该是objects@AlexAkshajMody我添加了一个codesandbox示例
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`);
}