FastReport 导出Excel、Word、Pdf

发布时间 2023-10-30 16:11:05作者: lingmin210
 private void ExportPDF(H_HistoryDataModel model)
        {
            try
            {
                // create report instance
                Report report = new Report();
                PrepareReport(report, model);
                // create export instance
                PDFExport export = new PDFExport();

                // export the report

                if (txtFilePath.Text.Trim() == "")//路径为空的时候默认放到桌面
                {
                    txtFilePath.Text = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
                }
                if (txtFileName.Text.Trim() == "")
                {
                    txtFileName.Text = string.Format("检测报告{0}.pdf", DateTime.Now.ToString("yyyy-MM-dd HHmmss"));
                }
                string strPath = this.txtFilePath.Text + "\\" + this.txtFileName.Text;
                if (!strPath.EndsWith(".pdf"))
                {
                    MessageBox.Show("请输入pdf格式的文件名!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }
                report.Export(export, strPath);

                // free resources used by report
                report.Dispose();
                MessageBox.Show("结果保存成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception ex)
            {
                LogHelper.Error(ex);
                MessageBox.Show("输入的路径无法访问,请重新输入!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

        private void ExportXLS(H_HistoryDataModel model)
        {
            try
            {
                // create report instance
                Report report = new Report();
                PrepareReport(report, model);

                FastReport.Export.OoXML.Excel2007Export xlsExport = new FastReport.Export.OoXML.Excel2007Export();
                xlsExport.ShowProgress = false;

                MemoryStream strm = new MemoryStream();
                report.Export(xlsExport, strm);

                strm.Position = 0;
                if (txtFilePath.Text.Trim() == "")//路径为空的时候默认放到桌面
                {
                    txtFilePath.Text = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
                }
                if (txtFileName.Text.Trim() == "")
                {
                    txtFileName.Text = string.Format("检测报告{0}.xls", DateTime.Now.ToString("yyyy-MM-dd HHmmss"));
                }
                string strPath = this.txtFilePath.Text + "\\" + this.txtFileName.Text;
                if (!strPath.EndsWith(".xls"))
                {
                    MessageBox.Show("请输入xls格式的文件名!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }
                FileStream fs = new FileStream(strPath, FileMode.Create);
                strm.WriteTo(fs);
                strm.Close();
                fs.Close();

                xlsExport.Dispose();
                strm.Dispose();
                fs.Dispose();
                report.Dispose();
                MessageBox.Show("结果保存成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception ex)
            {
                LogHelper.Error(ex);
                MessageBox.Show("输入的路径无法访问,请重新输入!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }

        }
   public void ExportPdfWordByFastReport(string reportFile = @"D:\reportFile.frx")
        {
            try
            {
                //数据源
                DataTable dt = new DataTable();
                dt.Columns.Add("col1", typeof(byte[]));
                dt.Columns.Add("col2", typeof(int));
                dt.Columns.Add("col3", typeof(string));
                dt.Rows.Add(dt.NewRow());
                dt.Rows[0]["col2"] = 2;
                dt.Rows[0]["col3"] = "表数据第三列字段值";

                FastReport.Report report = new FastReport.Report();
                DataSet ds = new DataSet();
                ds.Tables.Add(dt);
                report.RegisterData(ds);
                report.Load(reportFile);
                report.Prepare();

                string fileName = @"D:\2.docx";
                //导出Word,使用RichText.RTFExport,但是效果没有OoXML.Word2007Export好
                FastReport.Export.RichText.RTFExport export = new FastReport.Export.RichText.RTFExport();
                report.Export(export, fileName);

                //导出Word,使用OoXML.Word2007Export
                FastReport.Export.OoXML.Word2007Export exportWord = new FastReport.Export.OoXML.Word2007Export();
                exportWord.ShowProgress = false; //可选,设置导出时是否显示进度窗口,这里设置为不显示。
                report.Export(exportWord, fileName);

                //导出pdf
                fileName = @"D:\2.pdf";
                FastReport.Export.Pdf.PDFExport exportPDF = new FastReport.Export.Pdf.PDFExport();
                exportPDF.PdfCompliance = FastReport.Export.Pdf.PDFExport.PdfStandard.PdfX_3;//pdf版本1.4
                exportPDF.TransparentImages = false;
                report.Export(exportPDF, fileName);
            }
            catch (Exception ex)
            {

            }
        }