基于.net平台的office开发2

随序:

       很开心看到这么多的热心的读者,这未免让我有些惶恐,毕竟离做office 开发已经有一段时间了,现在在做WSE 2.0的应用。所以写的文章一般都是靠自己看着以前的代码然后去回忆以前出现的问题。怕自己辜负热心人的期望。不过自己也很开心,毕竟有这么多的同道中人。可以说是痛并快乐着

 

目录:

Word对象模型续

Smart Document开发

 

Word对象模型续

如何在Word文档中对其中的一些内容进行格式化的修改,比如比如你对Word文档中的某些图片的大小不满意,或者字体不满意。你希望是通过程序自动化完成,而不使用手动修改。基本上来讲对于字体段落的格式化比较容易,一般你可以通过Range对象来实现。我在这里介绍我在写程序的时候遇到一个让我郁闷了半天的问题,就是关于图片的格式化问题。我当时遇到的问题就是对图片的格式进行格式化。

因为是做智能文档的开发,所以我很容易得到一个Word.Document类,当然首先我就看到了Sharpes类,在MSDN中对Sharps类的介绍如下:

A collection of Shape objects that represent all the shapes in a document or all the shapes in all the headers and footers in a document. Each Shape object represents an object in the drawing layer, such as an AutoShape, freeform, OLE object, or picture.

我当时就想当然的认为我要操作的图片肯定会位于这个Sharps集合类的内部。但是当我想尽了一切的办法想去获得它里面的值,我都没有办法去获得需要的图片,后来偶尔之间才试出了使用InlineSharpes这个类,最后使用的代码如下:

int spCount = fDocument.InlineShapes.Count;fDocument是当前文档的Document对象

         if(spCount>0)

                   {

                            for(int i=1;i<=spCount;i++)

                            {

                                     //不可以使用Shapes,返回的全部是空

                                     if(fDocument.InlineShapes[i].PictureFormat!=null)

                                     {

                                               if(fDocument.InlineShapes[i].Height>MaxH)

                                               {

                                                        fDocument.InlineShapes[i].Height=MaxH;

                                               }

                                               if(fDocument.InlineShapes[i].Width>MaxW)

                                               {

                                                        fDocument.InlineShapes[i].Width=MaxW;

                                               }

                                     fDocument.InlineShapes[i].Range.Paragraphs.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter;

                                                                 }}}

注意:在这里最后对这些图片的对齐方式的更改,他没有直接提供一个Align的属性去设置,我当时仔细搜索了一下看到了HorizontalLineFormat这个方法,但是我设置他的时候就会提示Com对象出错,最后我采取了上面的那种方式实现了对齐。可谓投机取巧。

 

Smart Document开发:

第一个问题:注册出错。

在开始开发Smart Document,我就开始了骂微软的过程,当我开始学智能文档开发的时候,我首先从微软的例子下手。首先从最简单的SimpleSampleCS开始。记得刚开始有时候会注册不成功,但是现在我已经不太记得是什么原因了,我记得在注册时候有一个问题那就是,当你如果在打开了视图-〉缩略图的时候那么系统会提示你一个错误:

       You are currently viewing this document in multiple windows, to attach an xml expansion pack,you must first close all addintional windows so that you are viewing the document in only one window

其实你只要把缩略图关掉,就可以搞定这个问题了。我想这个问题应该是微软的问题。至于注册时候的其他的一些问题,我的意思是说你程序没有错误的时候,一般可以通过SDK文档的问题那个栏目里对应解决。

第二个问题:如何调试。

       在写程序的时候,我们都无法保证我们的程序完全的正确,而对于这样的智能文档,或者说是office开发的例子,我们该如何去调试我们的代码也是一个问题。

       我们将整个项目的调式模式设置成程序,然后把启动应用程序设定为Word.exe,当然这里是目录,你自己要去找你的Word.exe.其实这个时候你就已经可以实现调试功能了。你点调试,然后系统自动给你起一个word程序,然后你只要去打开那个加载了你的智能文档的程序,就可以调试。但是如果你对你的程序进行了修改的时候,你就必须重新加载你的扩展包,那么这个时候我们该怎么避免这个令人厌烦的工作呢,你只要将你的方案的输出目录设置到

C:/Documents and Settings/Administrator/Local Settings/Application Data/Microsoft/Schemas/SimpleSample/SimpleSampleCS_clsActions,这是我的机器上的目录,这个目录是智能文档的工程的dll注册后,放置的位置,也就是最后word程序获取逻辑的位置。这样过后你就可以像以前一样实现调试功能了。

第三个问题:多行文本。

       智能文档的程序的刚开始几个const变量非常重要,这里的NameSpace一定要和你的xsd里面定义的一样,否则你的程序就无法使用。然后里面的其他几个const也要和xsd互相对应。整个SmartDocument开发是比较死板的,你只要规定的位置添加规定的代码就可以作规定的事情。具体的代码中的每个函数有什么用处大家可以参考SDK得文档,这次我只是简单介绍我遇到的一个问题:多行文本。在智能文档中的所有控件,你都可以去设置一定的属性,让他显示的效果有一定的改变,我们可以在微软的下面链接中看到对应于所有控件的所有属性

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sdsdk/html/sdobjISmartDocProperties_HV01029911.asp,我们点开TextBox,看到,当然这是TextBox特有的你也可以看到那些对于所有控件都有效的属性。

Property key name

Description

PasswordCharacter

A single character that specifies the character that will be used to obscure typing into the text box so that it can be used as a password field.

IsMultiline

A Boolean value that specifies whether the text box allows multiple lines.

Note  Control displays only a single line at a time.

你可以在相应的方法(比如TextBox控件你就在PopulateTextboxContent里面写)里面调用Props.Write(string key,string value)的方式来设置属性,因为我们填写的信息非常有可能超过一行,我当时就把这个属性设置成了true,我当时以为会显示成多行文本,而且我还特意设置了X,YLengthWidth希望出现想象中的多行文本,但是请大家留意这里的一句话:Control displays only a single line at a time.

Faint,只能一次显示一行,我觉得这完全是没有站在用户的角度去思考问题,他如果填写第二行,想去修改第一行该怎么办呢?btw:不知道是我没有找到方法还是怎么的,这个问题一直是我心头的一个节,一直就是不能够实现。可能是我没有找到合适的方法吧。

基于STM32F407,使用DFS算法实现最短迷宫路径检索,分为三种模式:1.DEBUG模式,2. 训练模式,3. 主程序模式 ,DEBUG模式主要分析bug,测量必要数据,训练模式用于DFS算法训练最短路径,并将最短路径以链表形式存储Flash, 主程序模式从Flash中….zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值