JSPM

tt-export-to-csv

0.0.2
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 4
  • Score
    100M100P100Q35499F
  • License GPL-3.0

Export TanStack Table data to CSV format

Package Exports

  • tt-export-to-csv
  • tt-export-to-csv/dist/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (tt-export-to-csv) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

TanStack Table Export to CSV

This library provides a function to export data from a TanStack table to a CSV file.

Installation

  npm i tt-export-to-csv

or

  yarn add tt-export-to-csv

Dependencies

This library has the following dependencies:

  • papaparse: To handle data conversion to CSV format. It must be installed in your project for the library to work correctly.

Puedes instalar papaparse usando npm o yarn:

  npm install papaparse
  yarn add papaparse

Usage

exportToCsv

The main function of the library is exportToCsv, which allows you to export the table data to a CSV file.

Parámetros:

  • filename: The name of the CSV file to be generated.

  • headers: An array of Header objects that defines the table headers.

  • rows: An array of Row objects containing the table data.

  • original (optional): If specified as true, a CSV will be generated with the original data according to the interface used to define the columns. If not specified, the CSV will be created from headers and rows.

Column Customization:

You can customize the column export using the meta property in the column definition. The exportCsvString property allows you to define a string that will be used to customize the exported content. You can use ${variable}

...
  meta: {
        exportCsvString: '${name} more string' // allows you to define a string that will be used to customize the exported content. You can use ${variable} to insert values ​​obtained from getValue.
      }
...

Example:

import {
  columnDef,
  getFilteredRowModel,
  useReactTable,
} from "@tanstack/react-table";
import { exportToCsv } from 'tt-export-to-csv'

type User = {
  id: string;
  first-name: string;
  last-name: string;
  active: boolean;
};

const columnHelper = createColumnHelper<User>();

const UserColumns: ColumnDef<User>[] = [
  {
    id: 'name',
    header: 'Name',
    accesorFn: row => ({ name: row.first-name, lastName: row.last-name id: row.id}),
    cell: info => {
      const { name, lastName, id } = info.getValue() as {name: string, lastName: string, id: number};
      return (
        <a href={`/user/profile/${id}`}>
          <span>
          {`${name}-${lastName}`}
          </span>
        </a>
      )
    },
    meta: {
      exportCsvString: '${name}' // allows you to define a string that will be used to customize the exported content. You can use ${variable} to insert values ​​obtained from getValue.
    }
  },
  {
    id: 'state',
    header: 'State',
    accesorKey: 'active'
  }
]

const App: React.FC = () => {

  const [data, setData] = React.useState(() => [...defaultData]);

  const table = useReactTable({
    data,
    columns,
    getCoreRowModel: getCoreRowModel(),
  });

  const handleExportToCsv = (): void => {
    const headers = table
      .getHeaderGroups()
      .map((x) => x.headers)
      .flat();

    const rows = table.getCoreRowModel().rows; // All Rows
    const rows = table.getSelectedRowModel().rows; // Selected rows

    exportToCsv('users.csv', headers, rows);
  };

  return(
    <>
      <button onClick={handleExportToCsv}>Export to csv</button>
    </>
  )
}

License

GNU GPLv3