首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在ej2同步反应数据网格(到PDF和Excel)中导出详细行?

如何在ej2同步反应数据网格(到PDF和Excel)中导出详细行?
EN

Stack Overflow用户
提问于 2022-01-26 04:37:37
回答 1查看 372关注 0票数 0

我想将数据从ej2同步反应数据网格导出到Excel和PDF,但是现有的数据有一些与每一行相关的细节。我想导出下面的数据与详细的数据到Excel和PDF。在ej2同步反应数据网格中,有什么方法可以导出带有详细行的网格吗?我尝试在Export上使用hierarchyExportMode,它不能导出详细信息行,只导出该行中的主要数据。

这里是我想导出示例图的数据:

代码语言:javascript
运行
复制
import React from 'react';
import { Layout } from 'antd';
import dummyParrent from '../../../../dataDummy4.json';
import dummyAnak from '../../../../dataDummy5.json';

import {
    GridComponent,
    ColumnDirective,
    ColumnsDirective,
    Page,
    Inject,
    Toolbar,
    PdfExport,
    Grid,
    ExcelExport,
    Filter,
    DetailRow,
} from '@syncfusion/ej2-react-grids'

import { DataManager, Query } from '@syncfusion/ej2-data';

const Laporan = () => {
    const { Content } = Layout;

    let grid = Grid | null;

    const dataParrent = dummyParrent.map((dt, index) => {
        return ({
            no: index + 1,
            id_team: dt.id_team,
            nama_team: dt.nama_team,
            adviser: dt.adviser
        })
    })

    const dataAnak = dummyAnak.map((dt) => {
        return ({
            id: dt.id,
            nama: dt.nama,
            umur: dt.umur,
            col_dum: dt.col_dum,
            id_team: dt.id_team

        })
    })

    const detailData = (e) => {

        const selectData = new DataManager(dataAnak).executeLocal(new Query().where("id_team", "equal", e.data.id_team, false));

        const detail1 = new Grid({
            dataSource: selectData,
            columns: [
                { field: 'id', headerText: 'Id ', width: 100 },
                { field: 'nama', headerText: 'Nama', width: 100 },
                { field: 'umur', headerText: 'Umur', width: 100 },
                { field: 'col_dum', headerText: 'Col_dum', width: 100 },
                { field: 'id_team', headerText: 'Id Team', width: 100 }
            ]
        });

        const detail2 = new Grid({
            dataSource: selectData,
            columns: [
                { field: 'id', headerText: 'Id ', width: 100 },
                { field: 'nama', headerText: 'Nama', width: 100 },
                { field: 'umur', headerText: 'Umur', width: 100 },
                { field: 'col_dum', headerText: 'Col_dum', width: 100 },
                { field: 'id_team', headerText: 'Id Team', width: 100 }
            ]
        });
        detail1.appendTo(e.detailElement.querySelector('.custom-grid1'));
        detail2.appendTo(e.detailElement.querySelector('.custom-grid2'));
    }

    const gridTemplate = () => {

        return (
            <div className='mt-2'>
                <div className='mb-2'>
                    <b>Detail Data 1</b>
                    <div className='custom-grid1'></div>
                </div>
                <div className=''>
                    <b>Detail Data 2</b>
                    <div className='custom-grid2'></div>
                </div>
            </div>
        );
    }

    const toolbarClick = (args) => {
        if (grid) {
            if (args.item.id.includes('excelexport')) {
                grid.excelExport({
                    fileName: 'ExportHirarki.xlsx',
                    hierarchyExportMode: 'All',
                    }
                })
            } else if (args.item.id.includes('pdfexport')) {
                grid.pdfExport({
                    fileName: 'ExportHirarki.pdf',
                    hierarchyExportMode: 'All',
                    pageSize: 'A4',
                    pageOrientation: 'Landscape'
                })
            }
        }
    }

    const pdfHeaderQueryCellInfo = (PdfHeaderQueryCellInfoEventArgs) => {
        PdfHeaderQueryCellInfoEventArgs.cell.row.pdfGrid.repeatHeader = true;
    }

    return (
        <Content className='konten'>
            <div>
                <div className='mt-2'><b>First Grid</b></div>
                <GridComponent
                    dataSource={dataParrent}
                    ref={g => grid = g}
                    allowPaging={true}
                    toolbar={['PdfExport', 'ExcelExport', 'Search']}
                    allowPdfExport={true}
                    allowExcelExport={true}
                    allowFiltering={true}
                    filterSettings={{ type: 'Excel' }}
                    toolbarClick={toolbarClick}
                    pdfHeaderQueryCellInfo={pdfHeaderQueryCellInfo}
                    gridLines='Both'
                    width='auto'
                    dataBound={() => {
                        grid.detailRowModule.expandAll()
                    }}
                    detailDataBound={detailData}
                    detailTemplate={gridTemplate}
                >
                    <ColumnsDirective>
                        <ColumnDirective field='no' headerText='No' textAlign='Left' headerTextAlign='Center' width='120' />
                        <ColumnDirective field='id_team' headerText='Id Team' textAlign='Left' headerTextAlign='Center' width='120' />
                        <ColumnDirective field='nama_team' headerText='Nama Team' textAlign='Left' headerTextAlign='Center' width='120' />
                        <ColumnDirective field='adviser' headerText='Adviser' textAlign='Left' headerTextAlign='Center' width='150' />
                    </ColumnsDirective>
                    <Inject services={[Page, Toolbar, PdfExport, ExcelExport, Filter, DetailRow]} />
                </GridComponent>
            </div>
        </Content>
    );
};

export default Laporan;

这里是dataDummy4.json:

代码语言:javascript
运行
复制
[
    {
        "id_team": "1",
        "nama_team": "IYO A",
        "adviser": "Dummy"
    },
    {
        "id_team": "2",
        "nama_team": "IYO B",
        "adviser": "Dummy"
    },
    {
        "id_team": "1",
        "nama_team": "IYO C",
        "adviser": "Dummy"
    },
    {
        "id_team": "2",
        "nama_team": "IYO D",
        "adviser": "Dummy"
    }
]

和dataDummy5.json:

代码语言:javascript
运行
复制
[
    {
        "id_team": "1",
        "id": "5",
        "nama": "Child 1",
        "umur": "22",
        "status": "Single 1",
        "col_dum": "Hellow World"
    },
    {
        "id_team": "2",
        "id": "6",
        "nama": "Child 2",
        "umur": "25",
        "status": "Single 2",
        "col_dum": "Hellow World"
    },
    {
        "id_team": "2",
        "id": "7",
        "nama": "Child Baru",
        "umur": "25",
        "status": "Single Baru",
        "col_dum": "Hellow World"
    }
]

EN

回答 1

Stack Overflow用户

发布于 2022-02-01 11:27:47

EJ2网格不支持详细模板导出,因为模板可能包含任何内容(文本、图像等)。因此,如果希望将数据导出为主网格和子网格模式,则可以使用层次网格导出。

PdfExport

ExcelExport

演示

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70858703

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档