关于HtmlView的呈现与导出
请问在webform中,HtmlView能否设置“连续页显示”?麻烦提供一个关于HtmlView导出为excel的Demo,官网教程的导出方式存在瑕疵,例如:导出的excel生成多个sheet。博客中的教程(https://www.grapecity.com.cn/blogs/excel-export-page-or-page-merger-appeared-disorder)是在winform下。
您好,导出Excel的代码如下:// Provide the page report you want to render.
GrapeCity.ActiveReports.PageReport report = new GrapeCity.ActiveReports.PageReport();GrapeCity.ActiveReports.Document.PageDocument reportDocument = new GrapeCity.ActiveReports.Document.PageDocument(report);
// Create an output directory.
System.IO.DirectoryInfo outputDirectory = new System.IO.DirectoryInfo(@"C:\MyExcel");
outputDirectory.Create();
// Provide settings for your rendering output.
GrapeCity.ActiveReports.Export.Excel.Page.ExcelRenderingExtensionSettings excelSetting = new GrapeCity.ActiveReports.Export.Excel.Page.ExcelRenderingExtensionSettings();
excelSetting.FileFormat = GrapeCity.ActiveReports.Export.Excel.Page.FileFormat.Xls;
GrapeCity.ActiveReports.Extensibility.Rendering.ISettings setting = excelSetting;
// Set the rendering extension and render the report.
GrapeCity.ActiveReports.Export.Excel.Page.ExcelRenderingExtension excelRenderingExtension = new GrapeCity.ActiveReports.Export.Excel.Page.ExcelRenderingExtension();
GrapeCity.ActiveReports.Rendering.IO.FileStreamProvider outputProvider = new GrapeCity.ActiveReports.Rendering.IO.FileStreamProvider(outputDirectory, System.IO.Path.GetFileNameWithoutExtension(outputDirectory.Name));
// Overwrite output file if it already exists.
outputProvider.OverwriteOutputFile = true;
reportDocument.Render(excelRenderingExtension, outputProvider, excelSetting.GetSettings());
然后设置导出时sheet的属性是通过控制这个属性控制的:Multisheet的属性默认是true,你在后台代码层修改为 false就行。
1、第一个问题,您未解答。
2、第二个问题,您的方案是利用一个具有runat=server属性的按钮,来导出,如果我是html按钮呢?例如:
<input id='btnPrint' type='Button' value='导出' onclick='OnExport()'/>
function OnExport() {
var viewModel = GetViewModel('WV_Balance');
viewModel.Export(ExportType.Xls, function (uri) {
window.location = uri;
}, true);
其次,您的方案中,使用了:
System.IO.DirectoryInfo outputDirectory = new System.IO.DirectoryInfo(@"C:\MyExcel");
outputDirectory.Create();
如果我并不具有路径权限呢?而且您这个方法,要在服务器上产生多少垃圾文件呀,导出一次,产生一个excel。(尽管,我们可以通过后续代码删除,但此方法并不完美) 第一个问题这样设置:
然后第二个关于导出的问题,可以进行一个拦截,然后你进行对应的一个操作:
GrapeCity.ActiveReports.PageReport rpt = new GrapeCity.ActiveReports.PageReport(new System.IO.FileInfo(Server.MapPath(@"Reports\页面报表.rdlx")));
GrapeCity.ActiveReports.Document.PageDocument reportDocument = new GrapeCity.ActiveReports.Document.PageDocument(rpt);
// Provide settings for your rendering output.
GrapeCity.ActiveReports.Export.Excel.Page.ExcelRenderingExtensionSettings excelSetting = new GrapeCity.ActiveReports.Export.Excel.Page.ExcelRenderingExtensionSettings();
excelSetting.FileFormat = GrapeCity.ActiveReports.Export.Excel.Page.FileFormat.Xlsx;
GrapeCity.ActiveReports.Extensibility.Rendering.ISettings setting = excelSetting;
// Set the rendering extension and render the report.
GrapeCity.ActiveReports.Export.Excel.Page.ExcelRenderingExtension excelRenderingExtension = new GrapeCity.ActiveReports.Export.Excel.Page.ExcelRenderingExtension();
GrapeCity.ActiveReports.Rendering.IO.MemoryStreamProvider outputProvider = new GrapeCity.ActiveReports.Rendering.IO.MemoryStreamProvider();
reportDocument.Render(excelRenderingExtension, outputProvider, setting.GetSettings());
Response.ContentType = "application/vnd.ms-excel";
Response.AddHeader("content-disposition", "inline;filename=MyExport.xls");
System.IO.MemoryStream ms = new System.IO.MemoryStream();
outputProvider.GetPrimaryStream().OpenStream().CopyTo(ms);
Response.BinaryWrite(ms.ToArray());
Response.End();
第一个问题已经完美解决,谢谢,又衍生出另外一个问题:报表标题行如何冻结,在呈现的时候! 本帖最后由 wu8829 于 2019-6-17 17:45 编辑
第二个问题:
按照提供的方法导出后发现exccel中,出现空行(空行的位置是未设置MultiSheet = false之前分页的位置)
你好,冻结行列只能在H5的方式渲染的时候才可以。你现在用的HtmlViewer实现不了这个需求。
第二个问题,你说的空行的问题,是在分页前还是在分页后。 KearneyKang 发表于 2019-6-18 09:00
你好,冻结行列只能在H5的方式渲染的时候才可以。你现在用的HtmlViewer实现不了这个需求。
第二个问题,你 ...
分页前,也就是说,5 进水阀 是第一页的最后一条记录 该问题已自行解决,谢谢,请闭贴 好的:)
页:
[1]