1

我的 javascript 应用程序中有一个 ArrayBuffer(一个 excel 文件),我需要在单击按钮时将其作为可下载的 excel 文件提供。我使用 excel4node 库生成了 Arraybuffer。我尝试了以下方法:

  let element = document.createElement('a');
  let excelBuffer = await fetchService.getBuffer();
  let excelString = String.fromCharCode(...excelBuffer.data);
  console.log(excelString);
  
  element.setAttribute('href', 'application/vnd.ms-excel;charset=utf-8,' + encodeURIComponent(excelString));
  element.setAttribute('download', 'dataFile.xlsx');
  element.style.display = 'none';
  shadowRoot.appendChild(element);
  element.click();
  shadowRoot.removeChild(element);

此代码在单击按钮时执行。但这似乎不起作用。我要么收到格式错误的 URI 错误,要么浏览器尝试打开一个新的 url,上面写着“应用程序/阻止”。使用 String.fromCharCode 记录转换后的 excelString 会记录一些奇怪的符号。我知道这种方法使用 UTF-16 编码进行转换,但 ArrayBuffer 似乎是 utf-8 编码的。我也试过这个没用:

var blob = new Blob([excelBuffer.data], {type: "application/vnd.ms-excel"});
element.setAttribute('href', 'application/vnd.ms-excel;charset=utf-8,' + blob);
element.setAttribute('download','dataFile.xlsx');

我该如何进行这项工作?

4

0 回答 0