【问题标题】:How to export grid data to excel, csv and pdf files (React)如何将网格数据导出到 excel、csv 和 pdf 文件 (React)
【发布时间】:2019-09-12 06:26:21
【问题描述】:

我正在 React 和 .NET Core API 中创建一个应用程序。我已经创建了我的网格(没有为此使用任何 npm 包)。

需要将网格数据导出为 pdf、excel 和 csv 格式的功能。在没有任何 npm 包或库的情况下如何实现这一点?

我将在下载点击按钮上获取数据(在列表中)表单服务器(.NET 核心 API)。

我尝试了一些 npm 包,如 react-csv、downloadjs,但它们没有按预期工作。

以对象数组格式挖掘数据:

[{firstColumn: "1", secondCoulmn: "4", thirdColumn: "test"},
 {firstColumn: "2", secondCoulmn: "3", thirdColumn: "test2"}]

当我在 downloadjs 中传递此数据时,具有 [Object object] 内容和生成的 PDF 文件的 excel 文件已损坏。

对于 react-csv,它正在生成未知文件,例如 b0d7cfd9-f4ca-4792-bfad-2b3198c63a33

【问题讨论】:

  • 告诉我们您在使用 react-csv 和/或 downloadjs 时遇到的具体问题,以便我们帮助您解决这些问题。请附上您的代码。
  • csv 可以在没有任何库的情况下使用,但对于 xls 和 pdf,您必须使用库
  • @stone 我添加了更多细节。
  • @NihalSaxena 你能分享一下这样做的想法吗?
  • 确定@SandeepRasgotra 我已经添加了答案,请检查天气是否适合您

标签: reactjs .net-core asp.net-core-webapi


【解决方案1】:

假设数据是您要导出的网格

如果是 csv :

const csvContent = data.map(d=>d.join(",")).join("\n")
const element = document.createElement('a');
element.setAttribute(
  'href',
  `data:text/plain;charset=utf-8, ${encodeURIComponent(csvContent)}`,
);
element.setAttribute('download', `${fileName}.csv`);
element.style.display = 'none';
document.body.appendChild(element);
element.click();
document.body.removeChild(element); 

如果数据很复杂,你可以使用PapaParse

const csvContent = Papa.unparse(data);

如果是 Xls :

使用SheetJS库

示例:

const sheet = XLSX.utils.json_to_sheet(data);
const workbook = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(workbook, sheet, 'Sheet 1');
XLSX.writeFile(workbook, `${fileName}.xls`);

如果是pdf:

你需要创建网格的html

那么你可以使用jsPDF 库:

Generate pdf from HTML in div using Javascript

【讨论】:

  • 它适用于 Excel 和 CSV,确实很有帮助,但我仍在寻找 pdf 解决方案。
  • 您在创建 pdf 时遇到什么问题?
  • 在这个pdf解决方案中,我们可以将html转换为pdf。在我的场景中,我需要将所有数据导出为当前不在 html 中的 pdf,因为我在 10 等网格上显示有限的记录,所以在这种情况下,这不是可行的解决方案。
  • 在这种情况下,您必须简单地创建具有多个页面的 PDF
  • 如果你能分享代码 sn-p 我可以告诉你怎么做
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-25
  • 1970-01-01
  • 1970-01-01
  • 2013-02-19
  • 2012-12-19
相关资源
最近更新 更多