Page tree
Skip to end of metadata
Go to start of metadata

1. 内容概述



本节主要为您介绍React框架中自定义导出功能。用户可以根据自己的需要在页面自定义导出按钮来一键导出文档,可以导出的格式包括HTML、PDF、EXCEL等。

2. 具体实现



自定义导出API

/**
 * Exports currently displayed report to specified output format. Returns object which contains result data as blob object | string and download function. So you could either use this blob object or download file immediately. Please note that you can specify settings in PDF export as plain list (like **{title: 'Title', author: 'Author Name', ownerPassword: '1'}** etc...
 *
 * ```javascript
 * var options = {filename:"Invoice List"};
 * var cancelCallback = function(){
 *     return false; // continue export. Return true to cancel export process
 * }
 * viewer.export('pdf', options, {cancel: cancelCallback }).then(result => doSmthWithBlob(result.data));
 * //or you can download file
 * viewer.export('pdf', options, {cancel: cancelCallback }).then(result => result.download('Invoice List'));
 * ```
 *
 * @param format  Export format identifier. One of 'pdf', 'xlsx', 'html', 'tabular-data'.
 * @param settings  Format specific export settings.
 * @param params  Additional export customization.
 */
export(format: string, settings: Record<string, string | boolean | number>, params?: {
    cancel?: () => boolean;
}): Promise<ExportResult>;



React页面具体实现代码

import React, {Fragment} from "react";
import "@grapecity/activereports-localization-zh";
import ReactDOM from "react-dom";
import {Viewer as ReportViewer} from "@grapecity/activereports-react";
import { exportDocument as PdfExport } from "@grapecity/activereports/pdfexport";
import { exportDocument as XlsxExport } from "@grapecity/activereports/xlsxexport";
import { exportDocument as HtmlExport } from "@grapecity/activereports/htmlexport";
import "@grapecity/activereports-localization";

function App() {
    const viewer = React.useRef();

    // 导出PDF
    function exportPdf() {
        viewer.current.export('pdf', {}, {}).then(result => result.download("pdfExport"));
    }

    // 导出excel
    function exportExcel() {
        viewer.current.export('xlsx', {}, {}).then(result => result.download("xlsxExport"));
    }

    // 导出html
    function exportHtml() {
        viewer.current.export('html', {}, {}).then(result => result.download("htmlExport"));
    }

    return (
        <Fragment>
            <div style={{padding:"10px"}}>
                <button onClick={exportPdf}>导出PDF</button><span style={{padding:"10px"}}></span>
                <button onClick={exportExcel}>导出Excel</button> <span style={{padding:"10px"}}></span>
                <button onClick={exportHtml}>导出Html</button> <span style={{padding:"10px"}}></span>
            </div>
            <div id="viewer-host" style={{height: "800px"}}>
                <ReportViewer report={
                    {
                        Uri: "reports/p-report.rdlx-json",
                        Params: {"P1": "1"}
                    }
                } ref={viewer} language={"zh"}/>
            </div>
        </Fragment>
    );
}

ReactDOM.render(<App/>, document.getElementById("root"));



3. 实现效果


4. demo附件下载


react-demo-export.zip


  • No labels