文字处理控件TX,在类型中运用TX

By admin in 4858.com on 2019年4月12日

这几天一向在商讨TX Text
Control的利用,由于那上头的资料绝比较较少,主要靠下载版本的案例代码进行切磋,以及法定的片段博客案例开始展览学习,使用总括了一部分体验,特将其总结出来,供我们分享学习。本篇随笔重要介绍TX
Text Control V20的相关应用体验。

这几天一贯在商量TX Text
Control的行使,由于那上头的资料相对相比较少,主要靠下载版本的案例代码举办研讨,以及法定的部分博客案例开始展览学习,使用总计了部分体会,特将其计算出来,供我们分享学习。本篇随笔首要介绍TX
Text Control V20的有关应用体验。

这几天一向在研讨TX Text
Control的应用,由于那上头的素材相对相比少,主要靠下载版本的案例代码进行商讨,以及法定的片段博客案例进行学习,使用计算了有的体验,特将其总计出来,供我们分享学习。本篇小说主要介绍TX
Text Control V20的连带应用体验。

在诸多文书档案管理的成效模块里面,大家往往需求对WOQashqaiD稳定展开始展览示、编辑等处理,而固然运用微软word控件进行拍卖,必要安装WOCRUISERD组件,而且接口使用也有失得简单易用,因而假使有第一方且不用安装Office的能够显得WO昂CoraD及开始展览编写制定,那是相比较不易的取舍,TX
Text
Control正是那样的控件,本文正是依照这几个控件的运用,达成在文档管理项目中的应用。

一、TX Text Control控件介绍

TX Text Control是壹款效用周围于 MS Word
的文字处理控件,蕴涵文书档案创制、编辑、打字与印刷、邮件合并、格式转换、拆分合并、导入导出、批量变更等职能。广泛应用于公司文档管理,网址内容公布,电子病历中病案模板创建、病历书写、修改历史、一而再打字与印刷、病案归档等作用的完毕。

以此控件主要的成效正是足以看成Word以及任何文书档案的编辑器使用,固然显示WOPRADOD内容的控件也有局地,如大家得以行使DevExpress里面包车型地铁GL450TF文书档案编辑器来贯彻,同样运维的很好,结合Aspose.Word后台的文书档案处理,我们得以做到类似报表的多少变动,而且能够把变化后的文书档案举办展示、编辑等操作处理。

TX Text
Control就算作为文书档案编辑各方面都呈现不错,然则其MailMerge邮件合并作用依旧平时应用的多个成效,正是把大家的数目和文档模板来1个统一,然后显示最后的文档内容,那种能够用来做壹些类似发票、邮件、职员和工人新闻等的多少处理和展示,MailMerge邮件合并能够绑定主从表的多寡,能够契合多数的渴求。

自小编当然想用它做3个看似电子病历一样的功能模块,不说在文书档案里面,大家很难形成一些下拉列表的处理(
官方博客里面有三个简易的案例,但是不佳用),1般景况下,假如大家只是做文书档案展现、数据统一等正规的操作,还是很科学的。

其1控件的成效介绍,能够参见葡萄城个中的网页介绍(),这些控件的相干开发职员使用然后分享经验的篇章很少,能在网上搜到的绝当先1/二是葡萄城人员对那个控件的德姆o代码实行壹个不难易行粘贴表明,未有进一步的递进介绍和使用场景的介绍。固然葡萄城列举了多少个电子病历的营业所出品案例,不过这几家商户的电子病历产品是很难下载到,也不许知道真假恐怕采取处境。

这几天作者把那一个控件的各个特色做了部分学习,比量齐观新把官网的文书档案编辑例子进行了全新开发,参考着做了三个截然壹致的编辑器版本,也大概对它的壹壹属性、方法处理有了2个更为深远的摸底。

大家先通过二个软件界面来询问整个软件的局地职能(这些是自己仿照官方案例做的多少个程序)。

4858.com 1

以此控件默许安装后,会包罗很多德姆o案例,具体能够参照目录C:\Users\Administrator\Documents\TX
Text Control 20.0.NET for Windows Forms\Samples\ 实行询问。

 

1、TX Text Control控件介绍

文字处理控件TX,在类型中运用TX。TX Text Control是1款作用左近于 MS Word
的文字处理控件,包括文书档案创立、编辑、打字与印刷、邮件合并、格式转换、拆分合并、导入导出、批量变迁等职能。广泛应用于集团文书档案管理,网址内容发表,电子病历中病案模板创立、病历书写、修改历史、延续打字与印刷、病案归档等功效的贯彻。
那个控件重要的效益正是能够看作Word以及其余文档的编辑器使用,尽管体现WO卡宴D内容的控件也有局地,如大家可以动用DevExpress里面的福特ExplorerTF文书档案编辑器来贯彻,同样运维的很好,结合Aspose.Word后台的文书档案处理,大家能够完成类似报表的数额变动,而且能够把变化后的文书档案进行展示、编辑等操作处理。
TX Text
Control固然作为文书档案编辑各地点都显现不错,然则其MailMerge邮件合并功用还是不时接纳的3个效益,正是把大家的数量和文书档案模板来三个合并,然后展现最终的文书档案内容,那种能够用来做壹些近乎发票、邮件、职员和工人音讯等的数码处理和展现,MailMerge邮件合并能够绑定主从表的数额,能够契合多数的必要。
自身本来想用它做二个类似电子病历1样的成效模块,不说在文书档案里面,我们很难实现1些下拉列表的拍卖(
官方博客里面有2个简易的案例,可是不好用),1般情状下,假使大家只是做文档展示、数据统一等常规的操作,依然很不利的。
本条控件的机能介绍,能够参考葡萄城之中的网页介绍(http://www.gcpowertools.com.cn/products/textcontrol\_winform\_features.htm),那个控件的相干开发职员使用然后分享经历的小说很少,能在网上搜到的大多数是葡萄城人士对那个控件的德姆o代码举行二个简练粘贴表明,没有进一步的递进介绍和应用场景的介绍。尽管葡萄城列举了多少个电子病历的铺面出品案例,不过这几家商厦的电子病历产品是很难下载到,也不能知道真假或许采取景况。
这几天自个儿把那一个控件的各样风味做了一些学学,并再次把官网的文书档案编辑例子实行了崭新开发,参考着做了一个全然壹样的编辑器版本,也基本上对它的各样属性、方法处理有了一个尤为一语道破的询问。
咱俩先经过二个软件界面来打听整个软件的片段功用(这么些是自笔者仿照官方案例做的五个顺序)。

4858.com 2

这些控件私下认可安装后,会蕴藏很多德姆o案例,具体能够参见目录C:\Users\Administrator\Documents\TX
Text Control 20.0.NET for Windows Forms\Samples\ 进行打探。

一、TX Text Control控件介绍

TX Text Control是壹款效果看似于 MS Word
的文字处理控件,包罗文书档案创造、编辑、打字与印刷、邮件合并、格式转换、拆分合并、导入导出、批量转移等成效。广泛应用于公司文书档案管理,网站内容公布,电子病历中病案模板创建、病历书写、修改历史、三番五次打字与印刷、病案归档等效果的落到实处。

其一控件重要的功效正是能够用作Word以及此外文书档案的编辑器使用,尽管体现WOEscortD内容的控件也有部分,如笔者辈能够使用DevExpress里面包车型地铁普拉多TF文书档案编辑器来兑现,同样运转的很好,结合Aspose.Word后台的文书档案处理,我们能够形成类似报表的数目变化,而且能够把转变后的文书档案举办展示、编辑等操作处理。

TX Text
Control固然作为文书档案编辑各地方都呈现不错,可是其MailMerge邮件合并成效还是不时使用的二个意义,正是把大家的多寡和文书档案模板来多少个合并,然后展现最后的文档内容,那种能够用来做一些近似发票、邮件、职员和工人消息等的数目处理和突显,MailMerge邮件合并能够绑定主从表的数码,能够适合超越百分之五十的渴求。

自家本来想用它做一个接近电子病历1样的功用模块,不说在文书档案里面,大家很难成功壹些下拉列表的拍卖(
官方博客里面有1个简短的案例,然则倒霉用),壹般景观下,若是我们只是做文书档案体现、数据统一等健康的操作,依然很不错的。

那么些控件的效果介绍,能够参考葡萄城里面包车型地铁网页介绍(),那几个控件的相关开发人士使用然后分享经历的作品很少,能在网上搜到的大部分是葡萄城人士对那一个控件的德姆o代码实行贰个简练粘贴表达,未有进一步的递进介绍和选取场景的牵线。即使葡萄城列举了多少个电子病历的小卖部出品案例,不过这几家公司的电子病历产品是很难下载到,也无法知道真假只怕选拔景况。

这几天本人把那个控件的种种风味做了一些学学,同等对待新把官网的文书档案编辑例子举办了全新开发,参考着做了3个全然壹致的编辑器版本,也基本上对它的依次属性、方法处理有了2个一发入木三分的询问。

大家先经过一个软件界面来询问整个软件的一对效果(那么些是笔者仿照官方案例做的1个程序)。

4858.com 3

以此控件暗中认可安装后,会包括很多德姆o案例,具体可以参见目录C:\Users\Administrator\Documents\TX
Text Control 20.0.NET for Windows Forms\Samples\ 进行打探。

 

一、TX Text Control的牵线及利用

TX Text Control是1款作用看似于 MS Word
的文字处理控件,包含文书档案创建、编辑、打字与印刷、邮件合并、格式转换、拆分合并、导入导出、批量转变等功用。广泛应用于公司文书档案管理,网站内容发表,电子病历中病案模板创立、病历书写、修改历史、一连打字与印刷、病案归档等功用的达成。那几个控件重要的效益便是足以看做Word以及此外文书档案的编辑器使用,全部体现的法力尤其接近原生WO牧马人D的展现,是壹款尤其不利的控件套件。

在自我较早的壹篇小说《文字处理控件TX Text
Control的运用》里面,大致简单的牵线了那些控件的利用,而且本身把那个本子的英文能源总体汉化并拓展了编写翻译使用,基本上全数的效益都以显示平常的华语了,那样更切合大家实在项指标行使了。

咱俩在VS工具栏里面参加相应的控件,能够看出有以下相关的控件对象可供使用,一般景色下大家选用TextControl,然后在其基础上创设别的RulerBar、ButtonBar、StatusBar即可,而①旦咱们须求联合数据(很常用)就需求参加MailMerge控件对象。

4858.com 4

添加控件后,大家能够对控件的有关基础的复制、粘贴、剪切等操作能够直接使用控件的API即可完毕。

大家那边关键目标是在WInform项目中融为1体该控件的选择,就不像上篇那样介绍使用它编写二个完整独立的Word处理那样了。

如下边便是把有关的控件拖动到自定义控件上的服从。

4858.com 5

类代码如下所示:

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

除此以外效劳按钮能够自定义,增添依旧减弱壹些按钮功用,如下列表所示。

4858.com 6

 

二、TX Text Control控件的汉化

本条控件界面暗中同意是英文版本的,控件的相干菜单以及提示都是英文,因而大家须求对财富做壹些华语本地化处理才能正确突显。

合法未有提供普通话汉化包,只提供3个专业的英文财富,如下所示。

4858.com 7

大家必要做的正是将它们进行汉语翻译,然后重新编写翻译(使用buildres.bat脚本编写翻译)为中文能源dll。

咱俩先采纳VS编辑工具,把那么些英文财富记录转换为英文(那是1个比较繁琐的办事,官方网址上有1些旧版本的汉语包可供参考,以及新型的V20软件(编辑器软件)下载下来运维参照)。

4858.com 8

作者们各个实行中文处理,能够采纳百度、谷歌的翻译,以及软件界面的参考哦。

4858.com 9

以管理员情势运行VS的命令行,然后执行命令进行编写翻译能源即可。

buildres.bat zh-CN

4858.com 10

编写翻译成功后,在目录里面,会追加多个财富程序集。

txdocumentserver.resources.dll

txtextcontrol.resources.dll

然后我们把它复制到运转目录下,并置身zh-CN的目录里面即可。有了那个中文化的能源程序集,大家就能够使用它实行对控件的停放菜单提醒进行汉语化了。

中文化操作和此外常规的做法无差别于,大家在Main函数里面,添加如下代码即可。

Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("zh-CN");
Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("zh-CN");

运维程序,大家应用右键菜单,发现其间的财富都早已符合规律汉化了,其余相关的内置菜单和界面也都能够看看通常汉化。

4858.com 11

 

二、TX Text Control控件的汉化

其壹控件界面暗许是英文版本的,控件的相关菜单以及提示都以英文,因而我们需求对能源做一些汉语本地化处理才能正确呈现。
合法未有提供中文汉化包,只提供2个规范的英文财富,如下所示。

4858.com 12

咱俩要求做的正是将它们进行汉语翻译,然后重新编写翻译(使用buildres.bat脚本编写翻译)为华语能源dll。
大家先利用VS编辑工具,把这个英文财富记录转换为英文(那是二个比较麻烦的办事,官方网址上有一些旧版本的中文包可供参考,以及最新的V20软件(编辑器软件)下载下来运转参照)。

4858.com 13

咱俩每一个进行中文处理,能够使用百度、谷歌(Google)的翻译,以及软件界面包车型地铁参考哦。

4858.com 14

以管理员方式运转VS的命令行,然后执行命令实行编写翻译财富即可。

buildres.bat zh-CN

4858.com 15

编写翻译成功后,在目录里面,会增多八个能源程序集。
txdocumentserver.resources.dll
txtextcontrol.resources.dll
然后大家把它复制到运营目录下,并置身zh-CN的目录里面即可。有了那个普通话化的财富程序集,大家就能够动用它实行对控件的嵌入菜单提醒进行中文化了。
粤语化操作和别的常规的做法没有差距于,大家在Main函数里面,添加如下代码即可。

Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("zh-CN");
Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("zh-CN");

运维程序,大家应用右键菜单,发现其间的财富都已经不荒谬汉化了,别的相关的放到菜单和界面也都能够看到通常汉化。

4858.com 16

2、TX Text Control控件的汉化

本条控件界面默许是英文版本的,控件的连锁菜单以及提示都以英文,由此大家须求对能源做一些华语本地化处理才能正确呈现。

合法未有提供中文汉化包,只提供1个正规的英文能源,如下所示。

4858.com 17

我们必要做的就是将它们实行汉语翻译,然后重新编写翻译(使用buildres.bat脚本编写翻译)为华语财富dll。

笔者们先选拔VS编辑工具,把那些英文财富记录转换为英文(那是3个相比麻烦的行事,官方网址上有1些旧版本的汉语包可供参考,以及最新的V20软件(编辑器软件)下载下来运转参照)。

4858.com 18

我们各个实行汉语处理,可以动用百度、谷歌(Google)的翻译,以及软件界面包车型客车参考哦。

4858.com 19

以管理员方式运营VS的命令行,然后执行命令举办编写翻译能源即可。

buildres.bat zh-CN

4858.com 20

编写翻译成功后,在目录里面,会追加多少个财富程序集。

txdocumentserver.resources.dll

txtextcontrol.resources.dll

接下来大家把它复制到运维目录下,并雄居zh-CN的目录里面即可。有了那么些汉语化的能源程序集,我们就能够运用它实行对控件的松开菜单提醒进行粤语化了。

普通话化操作和任何正常的做法1样,大家在Main函数里面,添加如下代码即可。

Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("zh-CN");
Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("zh-CN");

运营程序,我们应用右键菜单,发现中间的财富都早已不荒谬汉化了,其余连锁的嵌入菜单和界面也都能够观望平常汉化。

4858.com 21

 

二、TX Text Control自定义控件的代码完毕和利用

为了落到实处那个WO君越D编辑控件的壹些按键操作,如全部挑选(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;
            }
        }

如搜寻和替换的放到对话框界面如下所示。

4858.com 22

4858.com 23

是因为WOPAJEROD文书档案数据,大家存款和储蓄在数据Curry面一般选择的是2进制存款和储蓄,因而还索要设置贰个自定义控件的属性用来安装获取获取文书档案控件的数码的,具体代码如下所示。

        /// <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);
                    }
                }
            }
        }

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

        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);
                }
            }
        }

接下来在文书档案管理的作用模块里面,对文书档案的剧情展开加载和保留即可,如下是文书档案彰显的品种实效。

4858.com 24

编写制定WO宝马X5D文书档案的界面效果如下所示,大家得以看到,那些控件里面体现的Word格式及内容都和WOLANDD软件呈现的并一点差别也没有常,相当不错,而且速度也极快,比DevExpress的RichTextEdit控件的效劳和速度要好很很多。

4858.com 25

4858.com 26

 

以上便是采取TX Text
Control实行WOOdysseyD文档的编纂展现处理的实在总括,希望能够给你提供灵感和增派。

3、TX Text Control的使用

有了汉化,只是大家例行使用控件的率先步,大家须要在程序里面整合控件,那么就要求对它进行利用,以及对控件的性质、事件开展拍卖,才能博取最好的行使效益。

咱俩在VS工具栏里面参与相应的控件,能够看看有以下相关的控件对象可供使用,一般景色下大家选择TextControl,然后在其基础上成立其余RulerBar、ButtonBar、StatusBar即可,而壹旦我们须要联合数据(很常用)就需求参预MailMerge控件对象。

4858.com 27

添加控件后,我们能够对控件的相干基础的复制、粘贴、剪切等操作能够直接采取控件的API即可兑现。

        private void menuEdit_Undo_Click(object sender, EventArgs e)
        {
            _textControl.Undo();
        }

        private void menuEdit_Redo_Click(object sender, EventArgs e)
        {
            _textControl.Redo();
        }

        private void menuEdit_Cut_Click(object sender, EventArgs e)
        {
            _textControl.Cut();
        }

当中查找、替换对话框也是能够通过API进行调出。

        private void menuEdit_Find_Click(object sender, EventArgs e)
        {
            _textControl.Find();
        }

        private void menuEdit_Replace_Click(object sender, EventArgs e)
        {
            _textControl.Replace();
        }

动用那个最基础的API是健康的操作。

而采纳插入相关的靶子,如图片、文本框等,就需求做一些粗略的编码,方便把对象加入到TextControl对象里面。

        private void menuInsert_Image_Click(object sender, EventArgs e)
        {
            TXTextControl.Image imageNew = new TXTextControl.Image();
            _textControl.Images.Add(imageNew, TXTextControl.HorizontalAlignment.Left, -1, TXTextControl.ImageInsertionMode.DisplaceText);
        }
        private void menuInsert_TextFrame_Click(object sender, EventArgs e)
        {
            try
            {
                // Force Exception if standard version:
                _textControl.TextFrames.GetItem();
                Size sizeTextFrame = new Size(2268, 2268);   // 4 x 4 cm

                TXTextControl.TextFrame textFrameNew = new TXTextControl.TextFrame(sizeTextFrame);
                _textControl.TextFrames.Add(textFrameNew, TXTextControl.HorizontalAlignment.Left, -1, TXTextControl.TextFrameInsertionMode.DisplaceCompleteLines);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, ProductName);
            }
        }

这些控件最广泛的正是MailMerge进行联合数据的操作了,这么些也是我们采纳它来拍卖很多模板化文档的目标。

MailMerge对象合并数据的操作,主即使经受集合对象恐怕是DataTable对象,所以我们亟须将我们的数据转换为那种格式,不然合并数据得不到要的结果。

统壹数据的处理情势,最开始就是内需规划好模板,那点很主要,模板的布署性照旧沿用了健康Word文书档案域对象的定义,须要加上一些域来做持续数据替换的指标占位符,如下是自己测试的3个模板。

4858.com 28

本条里面首固然主从表整合的1个模板,我们要求绑定常规的主表记录,也供给绑定明细表的集合记录,不过最后大家都急需把多少对象转换为汇聚(如DataSet),然后才能绑定到文书档案对象上去。

在上头的文书档案里面,你知识看到了域对象,而尚未看出三个藏身的二个会晤记录的起来和甘休的书签设置。关于书签的效应和怎么着操作,能够通晓本身事先的小说作品《动用Aspose.Word控件达成Word文书档案的操作》、《应用Aspose.Word控件和Aspose.Cell控件,完成Word文书档案和Excel文书档案的模板化导出》

书签的作用很要紧,不然不大概平常解析集合的笔录并绑定在WO奥迪Q7D界面上的,大家开拓书签管理对话框,能够看来上述文书档案里面有七个地点,书签标记的始发和竣事地点。

4858.com 29

这么我们规划好模板后,第三步正是透过代码生成相关对象,然后和文书档案实行合并就足以了。

例如作者创设多少个主表和七个从表的笔录,统一把它们生成2个DataSet对象供役使。

        public static DataSet CreateDataSet()
        {
            DataSet ds = new DataSet();

            DataTable dtMain = DataTableHelper.CreateTable("Company,HandNo,Creator,CreateTime|DateTime");
            dtMain.TableName = "main";
            DataRow dr = dtMain.NewRow();
            dr["Company"] = "广州爱奇迪软件科技有限公司";
            dr["HandNo"] = "123456";
            dr["Creator"] = "伍华聪";
            dr["CreateTime"] = DateTime.Now;
            dtMain.Rows.Add(dr);

            DataTable dt = DataTableHelper.CreateTable("ID,ProductName,Description,Price|decimal,Quantity|int");
            dt.TableName = "ProductInfo";
            dr = dt.NewRow();
            dr["ID"] = "1";
            dr["ProductName"] = "海飞丝洗发水";
            dr["Description"] = "海飞丝洗发水, 550ml";
            dr["Price"] = 19.8M;
            dr["Quantity"] = 100;
            dt.Rows.Add(dr);

            dr = dt.NewRow();
            dr["ID"] = "2";
            dr["ProductName"] = "联想品牌电脑";
            dr["Description"] = "联想Y700-15ISK-ISE 旗舰版";
            dr["Price"] = 6500M;
            dr["Quantity"] = 10;
            dt.Rows.Add(dr);

            dr = dt.NewRow();
            dr["ID"] = "3";
            dr["ProductName"] = "IPhone7 128G";
            dr["Description"] = "苹果IPhone7, 128G";
            dr["Price"] = 5800M;
            dr["Quantity"] = 10;
            dt.Rows.Add(dr);

            ds.Tables.Add(dtMain);
            ds.Tables.Add(dt);
            return ds;
        }

先加载模板文书档案

if (setting == null)
{
    setting = new TXTextControl.LoadSettings();
    setting.ApplicationFieldFormat = TXTextControl.ApplicationFieldFormat.MSWord;
}
_textControl.Load(Application.StartupPath + "\\Template\\template1.docx", TXTextControl.StreamType.WordprocessingML, setting);

整合统一数据

DataSet ds = PurchaseInfoHelper.CreateDataSet();
mailMerge1.MergeBlocks(ds);
mailMerge1.Merge(ds.Tables["main"], true);

末尾就足以见到大家所须求的结果了。

4858.com 30

当然,假使很纯熟Aspose.Word控件的应用,大家实在也能够应用Aspose.Word控件来做后台的数码整合处理,Aspose.Word控件帮衬广大变量定义,以及愈发扑朔迷离的处理,如自个儿把本来在框架模块里面包车型地铁人手信息导出Word功效抽取出来,那么些模块原先是接纳Aspose.Word来拍卖数据统1的,小编不改动在那之中的逻辑,只是把合并后的数目展现在TX
Text Control即可,如下代码所示。

var saveFile = StaffHelper.GenerateDoc();
//加载文档
_textControl.Load(saveFile, StreamType.MSWord);

谈到底就生成了作者们初阶介绍的软件界面效果。

4858.com 31

那么些控件近来采纳起来还算不错,但是对此有个别数据源的拍卖方面,以往希望后续追加更加多的接口,继续保持观看,希望能将商讨的战果用在切切实实的体系上。

3、TX Text Control的使用

有了汉化,只是大家如常使用控件的率先步,大家须要在程序里面整合控件,那么就要求对它进行利用,以及对控件的性质、事件举行拍卖,才能获取最棒的运用效益。
作者们在VS工具栏里面到场相应的控件,能够观看有以下相关的控件对象可供使用,壹般景象下大家利用TextControl,然后在其基础上创造其余RulerBar、ButtonBar、StatusBar即可,而假若我们要求统壹数据(很常用)就要求投入MailMerge控件对象。

4858.com 32

添加控件后,大家得以对控件的相关基础的复制、粘贴、剪切等操作能够一向动用控件的API即可兑现。

private void menuEdit_Undo_Click(object sender, EventArgs e)
{
    _textControl.Undo();
}

private void menuEdit_Redo_Click(object sender, EventArgs e)
{
    _textControl.Redo();
}

private void menuEdit_Cut_Click(object sender, EventArgs e)
{
    _textControl.Cut();
}

内部查找、替换对话框也是能够通过API实行调出。

private void menuEdit_Find_Click(object sender, EventArgs e)
{
    _textControl.Find();
}

private void menuEdit_Replace_Click(object sender, EventArgs e)
{
    _textControl.Replace();
}

利用那一个最基础的API是常规的操作。

而选择插入相关的靶子,如图片、文本框等,就须求做1些简练的编码,方便把对象参加到TextControl对象里面。

private void menuInsert_Image_Click(object sender, EventArgs e)
{
    TXTextControl.Image imageNew = new TXTextControl.Image();
    _textControl.Images.Add(imageNew, TXTextControl.HorizontalAlignment.Left, -1, TXTextControl.ImageInsertionMode.DisplaceText);
}
private void menuInsert_TextFrame_Click(object sender, EventArgs e)
{
    try
    {
        // Force Exception if standard version:
        _textControl.TextFrames.GetItem();
        Size sizeTextFrame = new Size(2268, 2268);   // 4 x 4 cm

        TXTextControl.TextFrame textFrameNew = new TXTextControl.TextFrame(sizeTextFrame);
        _textControl.TextFrames.Add(textFrameNew, TXTextControl.HorizontalAlignment.Left, -1, TXTextControl.TextFrameInsertionMode.DisplaceCompleteLines);
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message, ProductName);
    }
}

这么些控件最广泛的就是MailMerge举行联合数据的操作了,那一个也是大家采纳它来拍卖很多模板化文书档案的指标。
MailMerge对象合并数据的操作,重借使经受集合对象可能是DataTable对象,所以大家亟须将大家的多寡转换为那种格式,不然合并数据得不到要的结果。
统一数据的处理格局,最开首正是索要规划好模板,那点很重大,模板的宏图照旧沿用了常规Word文书档案域对象的定义,须要丰盛1些域来做持续数据替换的目的占位符,如下是本人测试的八个模板。

4858.com 33

本条里面首就算主从表整合的3个模板,大家需求绑定常规的主表记录,也须要绑定明细表的集合记录,可是最终咱们都急需把多少对象转换为汇聚(如DataSet),然后才能绑定到文书档案对象上去。
在上头的文书档案里面,你知识看到了域对象,而未有观察1个藏身的一个汇聚记录的上马和甘休的书签设置。关于书签的机能和什么操作,能够驾驭本身事先的小说文章《利用Aspose.Word控件完结Word文书档案的操作》、《行使Aspose.Word控件和Aspose.Cell控件,达成Word文书档案和Excel文书档案的模板化导出》
书签的效果很重点,不然无法平时解析集合的笔录并绑定在WOHighlanderD界面上的,大家开拓书签管理对话框,能够看到上述文书档案里面有两个地点,书签标记的开始和告竣地方。

4858.com 34

这么我们规划好模板后,第叁步就是透过代码生成相关对象,然后和文书档案实行合并就足以了。
譬如说作者营造二个主表和三个从表的记录,统一把它们生成二个DataSet对象供役使。

public static DataSet CreateDataSet()
{
    DataSet ds = new DataSet();

    DataTable dtMain = DataTableHelper.CreateTable("Company,HandNo,Creator,CreateTime|DateTime");
    dtMain.TableName = "main";
    DataRow dr = dtMain.NewRow();
    dr["Company"] = "广州爱奇迪软件科技有限公司";
    dr["HandNo"] = "123456";
    dr["Creator"] = "伍华聪";
    dr["CreateTime"] = DateTime.Now;
    dtMain.Rows.Add(dr);

    DataTable dt = DataTableHelper.CreateTable("ID,ProductName,Description,Price|decimal,Quantity|int");
    dt.TableName = "ProductInfo";
    dr = dt.NewRow();
    dr["ID"] = "1";
    dr["ProductName"] = "海飞丝洗发水";
    dr["Description"] = "海飞丝洗发水, 550ml";
    dr["Price"] = 19.8M;
    dr["Quantity"] = 100;
    dt.Rows.Add(dr);

    dr = dt.NewRow();
    dr["ID"] = "2";
    dr["ProductName"] = "联想品牌电脑";
    dr["Description"] = "联想Y700-15ISK-ISE 旗舰版";
    dr["Price"] = 6500M;
    dr["Quantity"] = 10;
    dt.Rows.Add(dr);

    dr = dt.NewRow();
    dr["ID"] = "3";
    dr["ProductName"] = "IPhone7 128G";
    dr["Description"] = "苹果IPhone7, 128G";
    dr["Price"] = 5800M;
    dr["Quantity"] = 10;
    dt.Rows.Add(dr);

    ds.Tables.Add(dtMain);
    ds.Tables.Add(dt);
    return ds;
}

先加载模板文书档案

if (setting == null)
{
    setting = new TXTextControl.LoadSettings();
    setting.ApplicationFieldFormat = TXTextControl.ApplicationFieldFormat.MSWord;
}
_textControl.Load(Application.StartupPath + "\\Template\\template1.docx", TXTextControl.StreamType.WordprocessingML, setting);

组成统壹数据

DataSet ds = PurchaseInfoHelper.CreateDataSet();
mailMerge1.MergeBlocks(ds);
mailMerge1.Merge(ds.Tables["main"], true);

提及底就足以见见我们所急需的结果了。

4858.com 35

理所当然,借使很熟识Aspose.Word控件的施用,我们其实也能够行使Aspose.Word控件来做后台的数目整合处理,Aspose.Word控件帮衬广大变量定义,以及愈发扑朔迷离的处理,如笔者把本来在框架模块里面包车型地铁人手音信导出Word成效抽取出来,这么些模块原先是运用Aspose.Word来拍卖数据统一的,笔者不改动个中的逻辑,只是把合并后的数量显示在TX
Text Control即可,如下代码所示。

var saveFile = StaffHelper.GenerateDoc();
//加载文档
_textControl.Load(saveFile, StreamType.MSWord);

终极就生成了笔者们初步介绍的软件界面效果。

4858.com 36

这几个控件近年来应用起来还算不错,然则对此1些数据源的拍卖方面,以往希望继续追加愈来愈多的接口,继续保持观察,希望能将商量的名堂用在切切实实的档次上。

3、TX Text Control的使用

有了汉化,只是大家如常使用控件的率先步,我们必要在先后里面整合控件,那么就须求对它实行应用,以及对控件的天性、事件进展处理,才能获得最棒的利用成效。

小编们在VS工具栏里面出席相应的控件,能够观望有以下相关的控件对象可供使用,1般景况下大家采取TextControl,然后在其基础上成立其余RulerBar、ButtonBar、StatusBar即可,而只要我们需求联合数据(很常用)就必要参预MailMerge控件对象。

4858.com 37

添加控件后,大家能够对控件的连锁基础的复制、粘贴、剪切等操作可以间接使用控件的API即可兑现。

        private void menuEdit_Undo_Click(object sender, EventArgs e)
        {
            _textControl.Undo();
        }

        private void menuEdit_Redo_Click(object sender, EventArgs e)
        {
            _textControl.Redo();
        }

        private void menuEdit_Cut_Click(object sender, EventArgs e)
        {
            _textControl.Cut();
        }

个中查找、替换对话框也是能够透过API实行调出。

        private void menuEdit_Find_Click(object sender, EventArgs e)
        {
            _textControl.Find();
        }

        private void menuEdit_Replace_Click(object sender, EventArgs e)
        {
            _textControl.Replace();
        }

使用那几个最基础的API是正规的操作。

而使用插入相关的指标,如图片、文本框等,就须要做1些简约的编码,方便把对象到场到TextControl对象里面。

        private void menuInsert_Image_Click(object sender, EventArgs e)
        {
            TXTextControl.Image imageNew = new TXTextControl.Image();
            _textControl.Images.Add(imageNew, TXTextControl.HorizontalAlignment.Left, -1, TXTextControl.ImageInsertionMode.DisplaceText);
        }
        private void menuInsert_TextFrame_Click(object sender, EventArgs e)
        {
            try
            {
                // Force Exception if standard version:
                _textControl.TextFrames.GetItem();
                Size sizeTextFrame = new Size(2268, 2268);   // 4 x 4 cm

                TXTextControl.TextFrame textFrameNew = new TXTextControl.TextFrame(sizeTextFrame);
                _textControl.TextFrames.Add(textFrameNew, TXTextControl.HorizontalAlignment.Left, -1, TXTextControl.TextFrameInsertionMode.DisplaceCompleteLines);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, ProductName);
            }
        }

其一控件最普遍的就是MailMerge实行统1数据的操作了,那个也是我们选拔它来处理很多模板化文书档案的目标。

MailMerge对象合并数据的操作,重要是承受集合对象可能是DataTable对象,所以我们务必将咱们的数据转换为那种格式,不然合并数据得不到要的结果。

联合数据的处理格局,最先导正是须求规划好模板,这一点很要紧,模板的安插性照旧沿用了正规Word文书档案域对象的定义,要求丰裕一些域来做持续数据替换的对象占位符,如下是本人测试的三个模板。

4858.com 38

其1里面首若是主从表整合的一个模板,大家供给绑定常规的主表记录,也亟需绑定明细表的碰面记录,可是最后大家都必要把数量对象转换为集聚(如DataSet),然后才能绑定到文书档案对象上去。

在地点的文书档案里面,你知识看到了域对象,而尚未看出1个隐蔽的3个成团记录的始发和了结的书签设置。关于书签的职能和怎么操作,能够理解自个儿以前的小说文章《使用Aspose.Word控件达成Word文档的操作》、《采取Aspose.Word控件和Aspose.Cell控件,落成Word文书档案和Excel文书档案的模板化导出》

书签的机能很要紧,不然不大概正常解析集合的记录并绑定在WOEvoqueD界面上的,大家开辟书签管理对话框,能够看来上述文书档案里面有四个岗位,书签标记的早先和得了地点。

4858.com 39

如此大家设计好模板后,第叁步就是由此代码生成相关对象,然后和文书档案举办统一就能够了。

比如作者构建贰个主表和1个从表的记录,统1把它们生成一个DataSet对象供役使。

        public static DataSet CreateDataSet()
        {
            DataSet ds = new DataSet();

            DataTable dtMain = DataTableHelper.CreateTable("Company,HandNo,Creator,CreateTime|DateTime");
            dtMain.TableName = "main";
            DataRow dr = dtMain.NewRow();
            dr["Company"] = "广州爱奇迪软件科技有限公司";
            dr["HandNo"] = "123456";
            dr["Creator"] = "伍华聪";
            dr["CreateTime"] = DateTime.Now;
            dtMain.Rows.Add(dr);

            DataTable dt = DataTableHelper.CreateTable("ID,ProductName,Description,Price|decimal,Quantity|int");
            dt.TableName = "ProductInfo";
            dr = dt.NewRow();
            dr["ID"] = "1";
            dr["ProductName"] = "海飞丝洗发水";
            dr["Description"] = "海飞丝洗发水, 550ml";
            dr["Price"] = 19.8M;
            dr["Quantity"] = 100;
            dt.Rows.Add(dr);

            dr = dt.NewRow();
            dr["ID"] = "2";
            dr["ProductName"] = "联想品牌电脑";
            dr["Description"] = "联想Y700-15ISK-ISE 旗舰版";
            dr["Price"] = 6500M;
            dr["Quantity"] = 10;
            dt.Rows.Add(dr);

            dr = dt.NewRow();
            dr["ID"] = "3";
            dr["ProductName"] = "IPhone7 128G";
            dr["Description"] = "苹果IPhone7, 128G";
            dr["Price"] = 5800M;
            dr["Quantity"] = 10;
            dt.Rows.Add(dr);

            ds.Tables.Add(dtMain);
            ds.Tables.Add(dt);
            return ds;
        }

先加载模板文档

if (setting == null)
{
    setting = new TXTextControl.LoadSettings();
    setting.ApplicationFieldFormat = TXTextControl.ApplicationFieldFormat.MSWord;
}
_textControl.Load(Application.StartupPath + "\\Template\\template1.docx", TXTextControl.StreamType.WordprocessingML, setting);

结缘归并数据

DataSet ds = PurchaseInfoHelper.CreateDataSet();
mailMerge1.MergeBlocks(ds);
mailMerge1.Merge(ds.Tables["main"], true);

末段就能够观望我们所急需的结果了。

4858.com 40

自然,假使很熟谙Aspose.Word控件的应用,大家实际也得以利用Aspose.Word控件来做后台的数量整合处理,Aspose.Word控件接济广大变量定义,以及越发复杂的拍卖,如本人把原来在框架模块里面包车型地铁职员音讯导出Word功效抽取出来,这些模块原先是运用Aspose.Word来处理数量统1的,小编不改动当中的逻辑,只是把合并后的数据映现在TX
Text Control即可,如下代码所示。

var saveFile = StaffHelper.GenerateDoc();
//加载文档
_textControl.Load(saveFile, StreamType.MSWord);

4858.com ,终极就生成了大家开头介绍的软件界面效果。

4858.com 41

其一控件近日选取起来还算不错,但是对于1些数据源的处理地方,未来希望继续增多越来越多的接口,继续维持观看,希望能将研商的名堂用在切实可行的品种上。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有