Wijmo GridView没有内置数据导出Excel、PDF的接口函数,如果要导出为Excel或者PDF文件,需要写代码实现。
本文通过一个简单的途径实现了导出为PDF文件的方法,供参考:
- 通过使用 StringWriter and HtmlTextWriter 类来保存Grid数据为HTML字符串。
- 然后,通过其他控件生成PDF文件。 如我们这里用到的C1PdfDocument控件 (C1PdfDocument是http://helpcentral.componentone.com/nethelp/c1pdf/#!Documents/componentonepdfforne.htm dll的一部分)
- 创建一个C1PdfDocument类的实例后,便可获得一个PDF文档的空白页面。你可以通过类如DrawStringHtml(), DrawString()的函数来写PDF文档内容
- 主要代码如下:
1: public void ExportToPDF(C1GridView grid)
2: {
3: C1PdfDocument pdfdoc = new C1PdfDocument();
4: RectangleF rect = pdfdoc.PageRectangle;
5: Font font = new Font("Times New Roman", 12);
6:
7: StringWriter sw = new StringWriter();
8: HtmlTextWriter htmlwriter = new HtmlTextWriter(sw);
9:
10: System.Web.UI.HtmlControls.HtmlForm form1 = new System.Web.UI.HtmlControls.HtmlForm();
11: grid.AllowPaging = false;
12: grid.DataBind();
13: form1.Controls.Add(grid);
14: form1.Controls[0].RenderControl(htmlwriter);
15: StringReader streader = new StringReader(sw.ToString());
16: string str = streader.ReadToEnd();
17: string savepath = Server.MapPath("Grapecity_TestData.pdf");
18:
19: for (int start = 0; ; )
20: {
21: start = pdfdoc.DrawStringHtml(str, font, Brushes.Black, rect, start);
22: // 导出完成
23: if (start >= int.MaxValue)
24: {
25: break;
26: }
27: // 插入新页面
28: pdfdoc.NewPage();
29: }
30:
31: pdfdoc.Save(savepath);
32: streader.Close();
33: lblUpdate.Text = "数据以及被导出为PDF文档";
34: System.Diagnostics.Process.Start(savepath);
35: }
36:
代码如下: