在项目中利用TX Text Control进行WORD文档的编辑显示处理

在很多文档管理的功能模块里面,我们往往需要对WORD稳定进行展示、编辑等处理,而如果使用微软word控件进行处理,需要安装WORD组件,而且接口使用也不见得简单易用,因此如果有第三方且不用安装Office的能够展示WORD及进行编辑,那是比较不错的选择,TX Text Control就是这样的控件,本文就是基于这个控件的使用,实现在文档管理项目中的应用。

1、TX Text Control的介绍及使用

TX Text Control是一款功能类似于 MS Word 的文字处理控件,包括文档创建、编辑、打印、邮件合并、格式转换、拆分合并、导入导出、批量生成等功能。广泛应用于企业文档管理,网站内容发布,电子病历中病案模板创建、病历书写、修改历史、连续打印、病案归档等功能的实现。这个控件主要的功能就是可以作为Word以及其他文档的编辑器使用,整体展示的效果非常贴近原生WORD的展示,是一款非常不错的控件套件。

在我较早的一篇随笔《文字处理控件TX Text Control的使用》里面,大概简单的介绍了这个控件的使用,而且我把这个版本的英文资源全部汉化并进行了编译使用,基本上所有的功能都是展示正常的中文了,这样更适合我们实际项目的使用了。

我们在VS工具栏里面加入对应的控件,可以看到有以下相关的控件对象可供使用,一般情况下我们使用TextControl,然后在其基础上创建其他RulerBar、ButtonBar、StatusBar即可,而如果我们需要合并数据(很常用)就需要加入MailMerge控件对象。

添加控件后,我们可以对控件的相关基础的复制、粘贴、剪切等操作可以直接利用控件的API即可实现。

我们这里主要目的是在WInform项目中集成该控件的使用,就不像上篇那样介绍使用它编写一个完整独立的Word处理那样了。

如下面就是把相关的控件拖动到自定义控件上的效果。

类代码如下所示:

    /// <summary>
    /// 基于TxTextControl控件的自定义控件封装
    /// </summary>
    public partial class TextWordControl : XtraUserControl

另外功能按钮可以自定义,增加或者减少部分按钮功能,如下列表所示。

2、TX Text Control自定义控件的代码实现和使用

为了实现这个WORD编辑控件的一些按键操作,如全部选择(Ctrl+A)、查找(Ctrl+F)、替换(Ctrl+H)等基础操作,我们需要在控件代码中实现相关的按键事件处理,这样我们使用这些按键就可以直接调用控件的内置处理窗体了,具体代码如下所示。

    /// <summary>
    /// 基于TxTextControl控件的自定义控件封装
    /// </summary>
    public partial class TextWordControl : XtraUserControl
    {
        public TextWordControl()
        {
            InitializeComponent();

            InitEvent();
        }

        /// <summary>
        /// 处理控件的事件
        /// </summary>
        private void InitEvent()
        {
            Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("zh-CN");
            Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("zh-CN");

            this.textControl1.KeyDown += textControl1_KeyDown;
        }

        void textControl1_KeyDown(object sender, KeyEventArgs e)
        {
            HandleKeyDownEvent(e);
        }

        private void HandleKeyDownEvent(KeyEventArgs e)
        {
            switch (e.KeyCode)
            {
                case Keys.Insert:
                    if (e.Control || e.Alt || e.Shift) break;
                    //插入按键操作
                    textControl1.InsertionMode
                       = textControl1.InsertionMode == TXTextControl.InsertionMode.Insert
                       ? TXTextControl.InsertionMode.Overwrite
                       : TXTextControl.InsertionMode.Insert;
                    break;

                case Keys.A:
                    if (!e.Control || e.Alt || e.Shift) break;
                    // Ctrl-A: 全选操作
                    textControl1.SelectAll();
                    break;

                case Keys.F:
                    if (!e.Control || e.Alt || e.Shift) break;
                    // Ctrl-F: 查找操作
                    textControl1.Find();
                    break;

                case Keys.H:
                    if (!e.Control || e.Alt || e.Shift) break;

                    // Ctrl-H: 替换操作
                    textControl1.Replace();
                    break;
            }
        }

如查找和替换的内置对话框界面如下所示。

由于WORD文档数据,我们存储在数据库里面一般使用的是二进制存储,因此还需要设置一个自定义控件的属性用来设置获取获取文档控件的数据的,具体代码如下所示。

        /// <summary>
        /// 文档数据
        /// </summary>
        [Browsable(false)]
        public byte[] DocData
        {
            get
            {
                byte[] docData = null;
                textControl1.Save(out docData, TXTextControl.BinaryStreamType.MSWord);
                return docData;
            }
            set
            {
                if (value != null)
                {
                    try
                    {
                        textControl1.Load(value, TXTextControl.BinaryStreamType.MSWord);
                    }
                    catch(Exception ex)
                    {
                        LogHelper.Error(ex);
                        MessageDxUtil.ShowError(ex.Message);
                    }
                }
            }
        }

然后再提供的接口函数,用来加载本地WORD文档的数据,具体代码如下所示。

        public void LoadData(string file)
        {
            if (!string.IsNullOrEmpty(file))
            {
                try
                {
                    this.textControl1.Load(file, TXTextControl.StreamType.MSWord);
                }
                catch (Exception ex)
                {
                    LogHelper.Error(ex);
                    MessageDxUtil.ShowError(ex.Message);
                }
            }
        }

然后在文档管理的功能模块里面,对文档的内容进行加载和保存即可,如下是文档展示的项目实际效果。

编辑WORD文档的界面效果如下所示,我们可以看到,这个控件里面展示的Word格式及内容都和WORD软件展示的并无异样,非常不错,而且速度也很快,比DevExpress的RichTextEdit控件的效果和速度要好很很多。

以上就是应用TX Text Control进行WORD文档的编辑显示处理的实际总结,希望能够给你提供灵感和帮助。

时间: 2024-10-23 06:14:35

在项目中利用TX Text Control进行WORD文档的编辑显示处理的相关文章

C# : 操作Word文件的API - (将C# source中的xml注释转换成word文档)

这篇博客将要讨论的是关于: 如何从C#的source以及注释, 生成一份Word格式的关于各个类,函数以及成员变量的说明文档. 他的大背景如下...... 最近的一个项目使用C#, 分N个模块, 在项目的里程碑的时候, 日本的总公司要检查我们的成果物. 成果物包括源代码, 概要设计式样书(SD,System Design), 详细设计式样书(PD, Program Design), 自动化测试等等. 源代码必须要符合编码规范(每个函数都要有注释, 方法变量的命名规则等...) 这些检查都很正常,

利用POI操作不同版本word文档中的图片以及创建word文档

我们都知道要想利用java对office操作最常用的技术就应该是POI了,在这里本人就不多说究竟POI是什么和怎么用了.先说本人遇到的问题,不同于利用POI去向word文档以及excel文档去写入数据和向外导出数据并且保存到数据库中这些类似的操作,由于业务上的需要需要利用POI去读取word中的图片,并且去把图片去保存为一个file文件.查了Apache公司提供的api帮助文档,再网友的一些线索,本人也总结了几中对不同word版本(.doc或者是.docx结尾)对于文件中所含图片的操作方式,希望

利用POI操作不同版本号word文档中的图片以及创建word文档

我们都知道要想利用java对office操作最经常使用的技术就应该是POI了,在这里本人就不多说到底POI是什么和怎么用了. 先说本人遇到的问题,不同于利用POI去向word文档以及excel文档去写入数据和向外导出数据而且保存到数据库中这些类似的操作,因为业务上的须要须要利用POI去读取word中的图片,而且去把图片去保存为一个file文件.查了Apache公司提供的api帮助文档,再网友的一些线索,本人也总结了几中对不同word版本号(.doc或者是.docx结尾)对于文件里所含图片的操作方

php在程序中把网页生成word文档并提供下载

在这篇文章中主要解决两个问题: 1:在php中如何把html中的内容生成到word文档中 2:php把html中的内容生成到word文档中时,不居中显示问题,即会默认按照web视图进行显示. 3:php把html中的内容生成到word文档中时,相关样式不兼容问题 正文:    echo '<html xmlns:o="urn:schemas-microsoft-com:office:office"  xmlns:w="urn:schemas-microsoft-com:

可编程的文字处理引擎TX Text Control .NET Server for Windows Forms

TX Text Control .NET Server for Windows Forms控件是一个完全可编程的,用于ASP.NET服务器环境与 Microsoft Internet Explorer的文字处理引擎.它的设计理念就是在服务器端集中文字处理过程. 具体功能: 直接在浏览器中以所见即所得方式编辑文档 TX Text Control .NET Server为您提供了一个浏览器控件,通过它可以在微软IE中以进行所见即所得模式进行文本处理,甚至使用来自不同源的数据从零开始通过编程生成文档.

文字处理引擎TX Text Control .NET Server

TX Text Control .NET Server for Windows Forms控件是一个完全可编程的,用于ASP.NET服务器环境与 Microsoft Internet Explorer的文字处理引擎.它的设计理念就是在服务器端集中文字处理过程. 具体功能: 直接在浏览器中以所见即所得方式编辑文档 TX Text Control .NET Server为您提供了一个浏览器控件,通过它可以在微软IE中以进行所见即所得模式进行文本处理,甚至使用来自不同源的数据从零开始通过编程生成文档.

基于浏览器的文档处理控件TX Text Control .NET Server for WP

TX Text Control .NET Server for WPF控件为用于ASP.NET服务器环境提供一个完全可编程的文字处理引擎,并且包含一个WPF客户端版本 具体功能: 合并Microsoft Word模板,生成打印就绪的PDF文件 在浏览器中以所见即所得模式编辑处理文档 从同一个文档的每一页中生成图片或meta文件 使用来自不同源的数据从零开始通过编程生成文档 在所有支持的格式之间转换文档 完全独立于 Microsoft Word, Adobe Acrobat,及其他第三方软件 一台

.NET服务器文字处理引擎TX Text Control .NET Server

TX Text Control .NET Server for WPF控件为用于ASP.NET服务器环境提供一个完全可编程的文字处理引擎,并且包含一个WPF客户端版本 具体功能: 合并Microsoft Word模板,生成打印就绪的PDF文件 在浏览器中以所见即所得模式编辑处理文档 从同一个文档的每一页中生成图片或meta文件 使用来自不同源的数据从零开始通过编程生成文档 在所有支持的格式之间转换文档 完全独立于 Microsoft Word, Adobe Acrobat,及其他第三方软件 一台

支持打印和打印预览Word文档处理控件TX Text Control ActiveX

TX Text Control ActiveX 控件为软件开发人员提供了强大的所见所得的Word文档处理,可以加载.编辑和保存Wod格式(DOCX.DOC.RTF等),生成Word报表,文档转换,导出和直接创建PDF和PDF/A文件.该产品分发完全免费,包含了标准版.专业版和企业版. 具体功能: 支持打印和打印预览 文档可以分割为多个不同的段落,每个段落都可以单独的格式化 支持定义超链接,并加载和保存HTML文件 支持添加项目符号和数字列表 支持多层Undo和Redo操作 支持插入任何数量的列到