fengyu77 发表于 2015-5-14 14:09:00

回复 20楼frank.zhang的帖子

你好,我想要基于pagereport的Image、xml自定义导出代码。和两种区域报表(基于代码、基于xml)的Pdf导出例子。谢谢

frank.zhang 发表于 2015-5-14 15:17:00

您好,
Image的导出
            string reportname = "rptInvoice";
            GrapeCity.ActiveReports.PageReport report = new GrapeCity.ActiveReports.PageReport(new System.IO.FileInfo(Server.MapPath("../Reports/" + reportname + ".rdlx")));
            report.Report.DataSources.DataSourceReference = "";
            report.Report.DataSources.ConnectionProperties.DataProvider = "OLEDB";
            report.Report.DataSources.ConnectionProperties.ConnectString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};", Server.MapPath("../Data/NWind_CHS.mdb"));

            GrapeCity.ActiveReports.Document.PageDocument document = new GrapeCity.ActiveReports.Document.PageDocument(report);

            GrapeCity.ActiveReports.Export.Image.Page.Settings settings = new GrapeCity.ActiveReports.Export.Image.Page.Settings();
            settings.ImageType = GrapeCity.ActiveReports.Export.Image.Page.Renderers.ImageType.JPEG;


            settings.StartPage = 1;
            settings.EndPage = 1;

            GrapeCity.ActiveReports.Export.Image.Page.ImageRenderingExtension renderingExtension = new GrapeCity.ActiveReports.Export.Image.Page.ImageRenderingExtension();
            GrapeCity.ActiveReports.Rendering.IO.MemoryStreamProvider _provider = new GrapeCity.ActiveReports.Rendering.IO.MemoryStreamProvider();
            document.Render(renderingExtension, _provider, settings);

            System.IO.MemoryStream ms = new System.IO.MemoryStream();

            _provider.GetSecondaryStreams().OpenStream().CopyTo(ms);

            Response.ContentType = "image/jpg";
            Response.AddHeader("content-disposition", Server.UrlPathEncode("attachment;filename=客户订单.jpg"));
            Response.BinaryWrite(ms.ToArray());
            Response.End();
xml的导出,现有的代码是基于目录的导出,您可以参考之前的代码,修改为导出XML的。
// Provide the page report you want to render.
GrapeCity.ActiveReports.PageReport report = new GrapeCity.ActiveReports.PageReport(new
System.IO.FileInfo(@"C:\Sample_PageReport.rdlx"));
GrapeCity.ActiveReports.Document.PageDocument reportDocument = new
GrapeCity.ActiveReports.Document.PageDocument(report);
// Create a output directory
System.IO.DirectoryInfo outputDirectory = new System.IO.DirectoryInfo(@"C:\MyXml");
outputDirectory.Create();
// Provide settings for your rendering output.
GrapeCity.ActiveReports.Export.Xml.Page.Settings xmlSetting = new
GrapeCity.ActiveReports.Export.Xml.Page.Settings();
GrapeCity.ActiveReports.Extensibility.Rendering.ISettings setting = xmlSetting;
//Set the rendering extension and render the report.
GrapeCity.ActiveReports.Export.Xml.Page.XmlRenderingExtension xmlRenderingExtension = new
GrapeCity.ActiveReports.Export.Xml.Page.XmlRenderingExtension();
GrapeCity.ActiveReports.Rendering.IO.FileStreamProvider outputProvider = new
GrapeCity.ActiveReports.Rendering.IO.FileStreamProvider(outputDirectory,System.IO.Path.GetFileNameWithoutExtension(outputDirectory.Name));
reportDocument.Render(xmlRenderingExtension, outputProvider, xmlSetting);

fengyu77 发表于 2015-5-14 16:49:00

回复 22楼frank.zhang的帖子

谢谢,我还需要基于代码的、基于xml的Pdf导出代码

frank.zhang 发表于 2015-5-14 17:43:00

您好,
您的问题我们已经收到,明天中午之前给您相关的代码。

fengyu77 发表于 2015-5-15 08:58:00

回复 22楼frank.zhang的帖子

你好,对于上述代码
System.IO.DirectoryInfo outputDirectory = new System.IO.DirectoryInfo(@"C:\MyXml");
中MyXml文件可以发我一个吗?

frank.zhang 发表于 2015-5-15 10:15:00

您好,
经过电话沟通,MyXMl是自己导出的文件。
区域报表导出pdf可以参考
http://arhelp.grapecity.com/webhelp/AR9/index.html#GrapeCity.ActiveReports.Export.Pdf.v9~GrapeCity.ActiveReports.Export.Pdf.Section.PdfExport~Export.html

实现的思路是,使用Pdf.Section.PdfExport 这个类,这个类的使用方法和xlsExport的使用方式类似。
区域报表分为代码和xml格式的,在创建区域报表的时候,代码通过new的方式创建。XML需要通过XmlTextReader 先进行加载。但是,在加载完成后,使用上没有区别。您可以先尝试下,如果在实现过程中遇到问题,欢迎来论坛提问。

fengyu77 发表于 2015-5-15 13:08:00

回复 26楼frank.zhang的帖子

你好,对于柱状图之类的Excel导出无法实现,该怎么做?

不好意思,我已解决这个问题,不用回复了

frank.zhang 发表于 2015-5-15 13:47:00

:hjyzw:
页: 1 2 [3]
查看完整版本: 在FlashViewer下图表的导出