如何自定义材料表中的默认导出选项

ang*_*gus 7 reactjs material-ui material-table

我正在使用材料表,我想删除默认的 CSV 和 PDF 导出选项。

我只想有一个 Excel 选项。

我怎样才能更改菜单​​?

在此输入图像描述

谢谢

Vah*_*yan 12

对于自定义 CSV 和 PDF,您应该定义options

 options={{
    exportButton: {
       csv: true,
       pdf: true,
    }
 }}
Run Code Online (Sandbox Code Playgroud)

对于处理程序应该定义更多选项

 options={{
    exportButton: {
       csv: true,
       pdf: true,
    },
    exportCsv: (data, columns) => console.log(data, columns, '<== CSV'),
    exportPdf: (data, columns) => console.log(data, columns, '<== PDF'),
 }}
Run Code Online (Sandbox Code Playgroud)

在 CSV 的处理函数中,您可以使用filefy

import { CsvBuilder } from 'filefy';
Run Code Online (Sandbox Code Playgroud)

对于 PDF,您可以使用jspdfjspdf-autotable

import jsPDF from 'jspdf';
import 'jspdf-autotable';
Run Code Online (Sandbox Code Playgroud)

还有处理程序示例

exportCsv: (data, columns) => {
  const columnTitles = columns
      .map(columnDef => columnDef.title);
  
  const csvData = data.map(rowData =>
        columns.map(columnDef => rowData[columnDef.field]),
      );

  const builder = new CsvBuilder(`data.csv`)
        .setColumns(columnTitles)
        .addRows(csvData)
        .exportFile();

  return builder;
}
Run Code Online (Sandbox Code Playgroud)
exportPdf: (data, columns) => {
  const doc = new jsPDF();

  const columnTitles = columns
      .map(columnDef => columnDef.title);
  
  const pdfData = data.map(rowData =>
        columns.map(columnDef => rowData[columnDef.field]),
      );

  doc.autoTable({
     head: [columnTitles],
     body: pdfData,
  });

  doc.save(`data.pdf`);
}
Run Code Online (Sandbox Code Playgroud)


Nic*_*coE 8

像这样在 MT 组件上定义options将允许您显示/隐藏每个选项:

  options={{
      // ..other options
      exportButton: {
        csv: true,
        pdf: false
      }
   }}
Run Code Online (Sandbox Code Playgroud)

此外,您可以使用localization设置来重命名每个选项的标签,如下所示:

 localization={{
      toolbar: {
        exportCSVName: "Export some Excel format",
        exportPDFName: "Export as pdf!!"
      }
    }}
Run Code Online (Sandbox Code Playgroud)

看起来官方文档有点过时了,所以我在 GitHub 中的这些线程中找到了您正在寻找的答案:

在这里工作沙箱。祝你好运!