DevExpress ASPxHtmlEditor控件格式化并导出Word

在前台页面中先插入一个ASPxHtmlEditor控件,名为ASPxHtmlEditor1。 我用的Dev版本为14.1

格式化文本

在后台插入如下代码

1     const string css = "style=‘text-align:justify;"         //两端对齐
 2         + "text-justify:inter-ideograph;"
 3         + "text-indent: 2em;"                               //首行缩进2字符
 4         + "line-height:1.25;"                               //1.25倍行距
 5         + "margin-top:0;margin-bottom:0;"                   //段前段后0行
 6         + "font-size: 12pt;"                                //字体:小四
 7         + "font-family:Times New Roman,宋体;‘";              //中文字体:宋体,西文字体:Times New Roman
 8 
 9 
10     ASPxHtmlEditor1.Html = "<p " + css + ">";               //段落用标签p标记
11     for (int i = 0; i < 30;i++)
12         ASPxHtmlEditor1.Html += "测试文本123abCD";           //这是内容
13     ASPxHtmlEditor1.Html += "</p>

上述代码实现了对文字的格式化,可以基本满足生成一般报告的格式需要。

Word导出及页面设置

对于ASPxHtmlEditor控件,无法直接设置导出Word或其他格式文件的页面(页边距、纸张大小等),需借助RichEditDocumentServer来转存实现。

添加如下引用:

1 using DevExpress.XtraRichEdit;
2 using DevExpress.XtraRichEdit.API.Native;

插入下面两个函数

1     private void SetPrintOptions(IRichEditDocumentServer richedit)              //设置格式

2     {
 3         foreach (Section _section in richedit.Document.Sections)
 4         {
 5             _section.Page.PaperKind = System.Drawing.Printing.PaperKind.A4;     //A4纸
 6             _section.Page.Landscape = false;                                    //竖版
 7             _section.Margins.Left = 295f;                                       //左侧页边距 2.5cm
 8             _section.Margins.Right = 295f;
 9             _section.Margins.Top = 295f;
10             _section.Margins.Bottom = 295f;
11 
12         }
13     }
14 
15     protected void PushToBrowser(string fileName)                               //导出文件
16     {
17 
18         FileStream fs = new FileStream(fileName, FileMode.Open);
19         byte[] bytes = new byte[(int)fs.Length];
20         fs.Read(bytes, 0, bytes.Length);
21         fs.Close();
22         if (File.Exists(fileName))
23             File.Delete(fileName);
24 
25         Response.ContentType = "application/octet-stream";
26         Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
27         Response.BinaryWrite(bytes);
28         Response.Flush();
29         Response.End();
30     }

在执行导出的事件(如Button_Click事件)中添加如下代码

1         string outputFileName = "newtext.docx";            //导出文件的名称


 3         FileStream fs = new FileStream("test.docx", FileMode.Create);
 4         ASPxHtmlEditor1.Export(DevExpress.Web.ASPxHtmlEditor.HtmlEditorExportFormat.Docx, fs);
 5         fs.Close();
 6         fs.Close();
 7 
 8         RichEditDocumentServer srv = new RichEditDocumentServer();
 9         srv.LoadDocument("test.docx", DocumentFormat.OpenXml);
10         srv.BeginUpdate();
11         SetPrintOptions(srv);
12         srv.EndUpdate();
13         srv.SaveDocument(outputFileName, DocumentFormat.OpenXml);
14 
15         if (File.Exists("test.docx"))
16             File.Delete("test.docx");
17 
18         PushToBrowser(outputFileName);

输出的文本如下:

p.s.关于页边距设置成cm的换算

试了几组数据,做了个3次拟合,先凑合用吧。(x是期望设置的厘米数 如2.5cm y就是程序的中用到的参数 如295 )

时间: 2024-08-28 14:29:45

DevExpress ASPxHtmlEditor控件格式化并导出Word的相关文章

BarcodeX条形码控件可以被导出为位图

BarcodeX条形码控件是一个功能齐全的ActiveX控件,可以生成任何类型的条码.它可以被绑定到一个数据源上,用于数据库报表中. 条形码可以被导出为位图,图元文件,剪贴板 具体功能: 用在Windows95/98/NT/2000/XP系统中的32位ActiveX控件 (OCX) 可在VisualStudio.Net, ASP, ASP.NET, VBScript等中使用 包含VB.Net示例程序 ASP页的频外发讯流条码图片 对于条码下方的可选文本行,所有WINDOWS字体均可用 前景和背景

DevExpress Grid控件经典常用功能代码收集

随着DevExpress 控件包越来越多的被中国用户使用,由于是英文版本,看英文版使用说明非常困难,慧都控件网在DevExpress 控件包使用方面有多年的研究,慧都控件网会不断的把DevExpress 使用经验分享给大家.»更多DevExpress开发资源与帮助文档 下面是我们平时收集最常用的DevExpress Winform 4个代码片段,比较常用,希望对广大DEV用户有帮助. 一 .GridControl的删除操作 private void rILinkEditInfoDel_Click

devexpress表格控件gridcontrol图片列,按钮列,时间列等特殊列的实现

1.项目中经常会在表格中插入按钮列,图片列,表格列一些非文本的特殊列.如何在devexpress表格控件gridcontrol中实现呢?以下列举一个实现添加图片列,按钮列,时间列,按钮列,开关列的示例,效果图如下: 2.数据代码,其中图片列使用了两种方法,大家可根据自己要求变跟. Image img = Image.FromFile(Application.StartupPath+"\\img\\11111.png");//方法1 //byte[] imgbyte=getImageBy

DevExpress 用户控件 分页(中)

说明: 1)具体调用请关注 看DevExpress 用户控件 分页(下) datanavi_ButtonClick 是DataNavigator的ButtonClikc事件 视图设计器: 分页用户控件后台代码如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Linq; using

DevExpress 用户控件 分页(上)

说明:使用用户控件分页,完成后,使用时非常简单,数据绑定,调用自己写的一个事件就OK了 前期准备工作: (1)添加一个用户控件 命名PageCtrl (2)打开代码:   [csharp] view plaincopyprint? //引用 using DevExpress.XtraEditors; //窗体继承 public partial class PageCtrl : DevExpress.XtraEditors.XtraUserControl (3)设置窗体属性 AutoScaleMo

DevExpress某些控件继承后的可编辑性

今天在使用DevExpress的BarManager菜单控件时,发现在进行继承时无法在继承的子类窗体中对其进行编辑与修改,另外像GridView也有类似的情形,后来查阅资料后,现在可通过DevExpress的设置解决此问题,方法为: 开始->DevExpress X.XX->tools->WinForms X.XX Design-Time Settings 选中Enable visual...,如下图所示,即可.

DevExpress GridControl 控件点滴

一.常用控件样式 public void setDgv(DevExpress.XtraGrid.Views.Grid.GridView gridView1) { gridView1.OptionsView.ShowColumnHeaders = true; //显示列标题 gridView1.OptionsView.ShowIndicator = false; // 不显示行标题 gridView1.OptionsView.ShowGroupPanel = true; // 显示分组panel

设置DevExpress GridControl控件时间列显示时、分、秒样式

如题,如果Dev GridControl控件绑定DataTable数据源时,DataTable中的某一列为Date类型时,GridControl默认显示样式只显示当前日期,并不会将时.分.秒显示出来.如图: 解决方案: 设置显示样式,如图: 设置完成,显示结果展示,如图:

Devexpress DateEdit控件的值不反馈到数据源的处理方式。

如果在GridControl中要把编辑的值反馈到数据源,可以用Gridview1.PostEdit()方法. 可是在datalayout中使用就会遇到一些问题:比如说DateEdit控件,在保存数据的时候如果鼠标没有移开该控件时,该控件的值反馈到数据源是空的. 按照习惯在提交数据的时候应该调用数据源的EndEdit()方法,这样会促datalayout控件反馈数据到数据源上,但是遗憾的是对于DateEdit控件无无济于事. 经过摸索,调用这个方法可以解决. this.dataLayoutCont