在遇到麻烦之前,我想和你确认几件事。我正在一个包含大量控件的仪表板项目中工作。一切都将被插入到单个面板控件中。控件将是表格、网格、图像、图表、一些 jquery 插件。
我想为 word、excel、pdf 提供导出选项。是否可以在 asp.net 中将具有所有控件的单个面板导出到 word 文档。
说出你的建议
是的,其实很简单。这是一个将 Gridview 导出到 Excel 的示例。你可以用任何控件做同样的事情。代替 this.gvRequests.RenderControl,替换为您的 Panel control.RenderControl。玩弄它,看看它是怎么回事。
//Export the datagrid to Excel
System.IO.StringWriter sw = new System.IO.StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
Response.AddHeader("content-disposition", "attachment; filename=SearchResults.xls");
Response.ClearContent();
Response.ContentType = "application/vnd.ms-excel";
this.gvRequests.RenderControl(htw);
Response.Write(sw.ToString());
Response.Flush();
Response.End();
您可以使用 Javascript html2Canvas 制作屏幕截图,例如它根据页面中的信息构建屏幕,我不确定,但您可以将此信息发送到服务器,创建 PDF 然后将其发送到浏览器(理论上至少可能)
如果您有任何动态客户端代码,那么您不能这样做。
无法将文档客户端的一部分转换为 .doc(最接近您可以做的是打印到 pdf,它没有那么有用)
通常,您会通过使用 aspose 之类的库生成 .doc 来执行类似服务器端的操作 - 但如果您要展示涉及 jquery 插件的内容,那么您自己做这将是一件非常痛苦的事情。
要获得您想要的结果,您可能不得不咬紧牙关,在服务器端重新创建所有内容以生成客户端可以下载的 .doc。
是的,
静态公共无效 RenderToExcel(面板 panelReport1,面板 panelReport2,面板 panelReport3,字符串 strFileName){ HttpContext.Current.Response.Clear(); 字符串附件=“附件;文件名=”+ strFileName+“.xls”;//HttpContext.Current.Response.AddHeader("content-disposition", attachment); HttpContext.Current.Response.ContentType = "应用程序/vnd.ms-excel"; HttpContext.Current.Response.AddHeader("content-disposition", attachment); HttpContext.Current.Response.Charset = ""; //HttpContext.Current.Response.ContentType = "application/vnd.xls";
//HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding(1252); StringWriter sw = new StringWriter(); HtmlTextWriter htw = new HtmlTextWriter(sw); panelReport1.RenderControl(htw); if (panelReport2 != null) { panelReport2.RenderControl(htw); if (panelReport3 != null) panelReport3.RenderControl(htw); } HttpContext.Current.Response.Write(sw.ToString()); Response.End(); }
您可以在代码中使用 WebBrowser 控制服务器端在服务器内存中请求您自己的页面并以这种方式生成图像,或者使用这个库(更简单)http://www.websitesscreenshot.com/
编辑
经过一番思考,你想要的东西已经可用了!
用户转到网页,按 ALT + 打印屏幕,转到 Word 或 Excel,然后按 CTRL + P !!! 工作完成,一切都内置在 \0/ 早点回家 :)