Silverlight 利用Telerik导出到Word续(改进篇)

来源:互联网 发布:最实惠的购物软件 编辑:程序博客网 时间:2024/04/29 03:20

1,定义一个gridview和两个exportoption

        private RadGridView grid = new RadGridView();
        private GridViewExportOptions options = new GridViewExportOptions();
        private GridViewExportOptions innerOptions = new GridViewExportOptions();
2,将第一个exportoption设置成文本格式,第二个exportoption设置成html格式。

            grid.ElementExporting += new EventHandler<GridViewElementExportingEventArgs>(grid_ElementExporting);
            grid.ElementExported += new EventHandler<GridViewElementExportedEventArgs>(DataGridView_ElementExported);
            grid.GridLinesVisibility = Telerik.Windows.Controls.GridView.GridLinesVisibility.None;
            grid.BorderThickness = new Thickness(0);
            grid.AutoGenerateColumns = false;
            options.ShowColumnHeaders = false;
            options.Format = ExportFormat.Text;
            options.Encoding = System.Text.Encoding.UTF8;
            innerOptions.ShowColumnHeaders = true;
            innerOptions.Format = ExportFormat.Html;
            innerOptions.Encoding = System.Text.Encoding.UTF8;

3,在grid中随意添加一个item

        private void ExportButton_Click(object sender, RoutedEventArgs e)
        {
            SaveFileDialog dialog = new SaveFileDialog();
            dialog.DefaultExt = "doc";
            dialog.Filter = String.Format("{1} files (*.{0})|*.{0}|All files (*.*)|*.*", "doc", "Word");
            dialog.FilterIndex = 1;

            if (dialog.ShowDialog() == true)
            {
                using (Stream stream = dialog.OpenFile())
                {
                    grid.Items.Add(new TextBlock());
                    grid.Export(stream, options);
                }
            }
        }

4,最后就可以在element_exported回调中定义自己的打印逻辑了,格式完全按照html样式来调整

        void DataGridView_ElementExported(object sender, GridViewElementExportedEventArgs e)
        {
            if (e.Element == ExportElement.Row)
            {
                if (Model != null)
                {
                    e.Writer.Write(String.Format("<h1> {0}信息报表</h1>", Model.entername));
                    e.Writer.Write("<h2>基本信息</h2>\n");
                    e.Writer.Write("<p>");
                    e.Writer.Write(String.Format(@"<b>污染源:</b> {0} <br />", Model.code_pollute));
                    e.Writer.Write(String.Format(@"<b>企业名称:</b> {0} <br />", Model.entername));
                    e.Writer.Write(String.Format(@"<b>企业类型:</b> {0} <br />", Model.code_enterrelation));
                    e.Writer.Write(String.Format(@"<b>企业类型:</b> {0} <br />", Model.code_qualification));
                    e.Writer.Write(String.Format(@"<b>企业类型:</b> {0} <br />", Model.code_enterrelation));
                    e.Writer.Write("</p>\n");

                    e.Writer.Write("<h2>监测数据</h2>\n");
                    e.Writer.Write("<p>");
                    MemoryStream memoryStream = new MemoryStream();
                    DataGridView.Export(memoryStream, innerOptions);
                    memoryStream.Flush();
                    e.Writer.Write(System.Text.Encoding.UTF8.GetChars(memoryStream.ToArray()));
                    e.Writer.Write("</p>");
                }
            }
        }