diff --git a/src/dash-table/components/Export/index.tsx b/src/dash-table/components/Export/index.tsx index 63a75fe6c..32b7adca3 100644 --- a/src/dash-table/components/Export/index.tsx +++ b/src/dash-table/components/Export/index.tsx @@ -1,6 +1,6 @@ import XLSX from 'xlsx'; import React from 'react'; -import { IDerivedData, Columns, ExportHeaders, ExportFormat, ExportColumns } from 'dash-table/components/Table/props'; +import { IDerivedData, Columns, Data, Datum, ExportHeaders, ExportFormat, ExportColumns } from 'dash-table/components/Table/props'; import { createWorkbook, createHeadings, createWorksheet } from './utils'; import getHeaderRows from 'dash-table/derived/header/headerRows'; @@ -14,6 +14,21 @@ interface IExportButtonProps { merge_duplicate_headers: boolean; } +export function filterData(data: Data, columnID: string[]) { + + let filteredData: Data = []; + + data.forEach(data_row => { + let filtered_row: Datum = {}; + columnID.forEach(column => { + filtered_row[column] = data_row[column]; + }); + filteredData.push(filtered_row); + }); + + return filteredData; +} + export default React.memo((props: IExportButtonProps) => { const { columns, export_columns, export_format, virtual_data, export_headers, visibleColumns, merge_duplicate_headers } = props; @@ -27,12 +42,12 @@ export default React.memo((props: IExportButtonProps) => { const maxLength = getHeaderRows(columns); const heading = (export_headers !== ExportHeaders.None) ? createHeadings(columnHeaders, maxLength) : []; - const ws = createWorksheet(heading, virtual_data.data, columnID, export_headers, merge_duplicate_headers); + const ws = createWorksheet(heading, filterData(virtual_data.data, columnID), columnID, export_headers, merge_duplicate_headers); const wb = createWorkbook(ws); if (export_format === ExportFormat.Xlsx) { - XLSX.writeFile(wb, 'Data.xlsx', {bookType: 'xlsx', type: 'buffer'}); + XLSX.writeFile(wb, 'Data.xlsx', { bookType: 'xlsx', type: 'buffer' }); } else if (export_format === ExportFormat.Csv) { - XLSX.writeFile(wb, 'Data.csv', {bookType: 'csv', type: 'buffer'}); + XLSX.writeFile(wb, 'Data.csv', { bookType: 'csv', type: 'buffer' }); } };