以前对office进行编程主要是采用VBA或者是com对象模型技术,虽然也很好的完成了一些功能但是总觉得不是很灵活方便。近些天,由于项目需要对VSTO作了简单的研究。
VSTO是微软从office 2003开始,在vs2005中提供的一种对Office进行二次开发的方式,
目前vsto对office提供两种版本的支持:office2003 和office2007。下面就对这两种版本中的支持情况作一描述:
Office2003:
Vsto对于2003版本的支持主要是使用对象的方式进行开发,在开发中有很多的限制。如使用word对象模型对word进行开发时很难处理文档中的图片,如果想要从word文档中将图片提取出来而很困难。目前我曾经尝试了几种方式,具体如下:
1, 直接通过shape对象提取;
2,通过将文档存储成html文件,来提取(无法确定文本中图片的名称);
3,将shape对象拷贝到windows粘贴板上,再通过粘贴板将文件保存,读取文件的二进制文件(保存的图片不能够显示)
4,采用XML方式读取(word2003中的xml文件无法解析)
但都没有达到理想的效果。如果哪位有很好的解决办法,还请帮忙!
Office2007
在office2007中,vsto使用了一系列新的技术,如在菜单和按钮方面采用新的Ribbon技术,使之更加的便于修改和配置,而同时由于office2007的存储方式采用了openxml技术,因此对于以前很难实现的对文档的操作,都可以通过以XML方式进行操作。在openxml中,由于可以自定义customxml,使得其扩展性得到了更大的提高。Office2007中还提供了一系列的content control,使得可以在文档中能够方便的插入控件。另外通过将content control与customxml的绑定,可以方便的通过修改contentcontrol 进而修改customxml中的内容,或者修改customxml的内容而完成对文档显示内容的修改。