如何自定义 material-table 中的默认导出选项

How to customize default export option in material-table

我正在使用 material-table,我想删除默认的 CSV 和 PDF 导出选项。

我希望只有一个 excel 选项。

如何更改菜单?

谢谢

像这样在 MT 组件上定义 options 将允许您 show/hide 每个选项:

  options={{
      // ..other options
      exportButton: {
        csv: true,
        pdf: false
      }
   }}

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

 localization={{
      toolbar: {
        exportCSVName: "Export some Excel format",
        exportPDFName: "Export as pdf!!"
      }
    }}

看起来官方文档有点过时了,所以我在 GitHub:

中找到了您在这些线程上寻找的答案

工作沙箱here。祝你好运!

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

 options={{
    exportButton: {
       csv: true,
       pdf: true,
    }
 }}

并且应该为处理程序定义更多选项

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

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

import { CsvBuilder } from 'filefy';

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

import jsPDF from 'jspdf';
import 'jspdf-autotable';

还有处理程序示例

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;
}
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`);
}