|
|
|
@ -35,7 +35,8 @@ export const TableExportBtn = (props) => {
|
|
|
|
|
const output_name = `${props.label}`;
|
|
|
|
|
const [columnsMap, setColumnsMap] = useState([]);
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
const flatCols = props.columns.flatMap((v, k) => (v.children ? v.children.map((vc) => ({ ...vc, title: `${v.title}-${vc.title}` })) : v)).filter(c => c.title);
|
|
|
|
|
const flatCols = props.columns.flatMap((v, k) => (v.children ? v.children.map((vc) => ({ ...vc, title: `${v.title}-${vc.title || ''}` })) : v)).filter(c => c.title);
|
|
|
|
|
// console.log('flatCols', flatCols);
|
|
|
|
|
setColumnsMap(flatCols);
|
|
|
|
|
|
|
|
|
|
return () => {};
|
|
|
|
@ -50,11 +51,12 @@ export const TableExportBtn = (props) => {
|
|
|
|
|
const itemMapped = columnsMap.reduce((sv, kset) => {
|
|
|
|
|
const render_val = typeof kset?.render === 'function' ? kset.render('', item) : null;
|
|
|
|
|
const data_val = kset?.dataIndex ? (Array.isArray(kset.dataIndex) ? getNestedValue(item, kset.dataIndex) : item[kset.dataIndex]) : undefined;
|
|
|
|
|
const v = { [kset.title]: render_val || data_val };
|
|
|
|
|
const v = { [kset.title]: data_val || render_val };
|
|
|
|
|
return { ...sv, ...v };
|
|
|
|
|
}, {});
|
|
|
|
|
return itemMapped;
|
|
|
|
|
});
|
|
|
|
|
// console.log('data', data);
|
|
|
|
|
const ws = utils.json_to_sheet(data, { header: columnsMap.filter((r) => r.dataIndex).map((r) => r.title) });
|
|
|
|
|
const wb = utils.book_new();
|
|
|
|
|
utils.book_append_sheet(wb, ws, 'sheet');
|
|
|
|
|