C#操作Office.word(一)
该文章主要是讲述如何使用VS2010创建word文档,因为在项目中我们可能需要点击一个按钮把数据库中的项目表单或图片显示到word文档中,因此该文章主要分析如何使用VS2010创建word文档并填写相应的内容。主要通过C#引用Miscrosoft Word 14.0 Object Library实现的。
一.创建工程
首先是使用VS2010创建一个windows窗体程序,并添加如下图所示的界面。
点击创建按钮,就能生成相应的word文档,文档的内容和格式可以在程序代码中设置。
二.添加引用
然后需要引用COM中的Miscrosoft Word 14.0 Object Library到工程中去。在"解决方案资源管理器"窗口中右击"引用"对象,在弹出的快捷菜单中选择"添加引用"命令,弹出"添加引用"对话框中选择COM选项卡,选择"Miscrosoft Word 14.0 Object Library"。如下图所示:
添加后,查看工程解决方案中引用,会看到引用到工程中的word对象如下图所示。这里会引用Microsoft.office.Interop.Word对象。
三.源代码
新建winform工程,在Form1的窗体代码中添加下面的代码:
//引用word对象类库和命名空间
using MSWord = Microsoft.Office.Interop.Word;
using System.IO;
using System.Reflection;
添加源程序代码如下所示:
private void btnCreate_Click(object sender, EventArgs e)
{
//初始化变量
object Nothing = Missing.Value; //COM调用时用于占位
object format = MSWord.WdSaveFormat.wdFormatDocument; //Word文档的保存格式
//wordApp = new MSWord.ApplicationClass(); //声明一个wordAPP对象
wordApp = new MSWord.ApplicationClass();
worddoc = wordApp.Documents.Add(ref Nothing, ref Nothing,
ref Nothing, ref Nothing);
//向文档中写入内容
wordstr = "hello,Office word!";
worddoc.Paragraphs.Last.Range.Text = wordstr;
//保存文档
path = "E:" + "\\" + "test"; //设置文件保存路劲
worddoc.SaveAs(ref path, ref format, ref Nothing, ref Nothing,
ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing,
ref Nothing, ref Nothing, ref Nothing, ref Nothing);
//关闭文档
worddoc.Close(ref Nothing, ref Nothing, ref Nothing); //关闭worddoc文档对象
wordApp.Quit(ref Nothing, ref Nothing, ref Nothing); //关闭wordApp组对象
MessageBox.Show("文档创建成功!"); }//btnCreate_Click
四.运行结果
点击运行,会在E:\路径下创建一个test.doc的word 2003的文件,并填写内容。如下图所示:
五.错误与分析
(1)在运行前可能会出现错误提示:无法嵌入互操作类型"Microsoft.Office.Interop.Word.ApplicationClass"。解决方法是:在Visual Studio 中点击菜单项"视图->解决方案资源管理器"在其中点开"引用"文件夹,在"Microsoft.Office.Interop.Word" 上点击鼠标右键选择"属性"。将属性中的"嵌入互操作类型"的值改为"false"即可。如下图所示:
(2)同时代码中的object Nothing = Missing.Value表示缺少的值,在使用C#->COM时某个参数不会被使用时用于占位,类似于C++中NULL,但C#中null与它不同,所以当你调用COM使传空或占位就需要该代码实现相同的功能。注意Missing.Value的命名空间在System.Reflection中.通常Microsoft Word 11.0 Object Library对应Word 2003,Microsoft Word 12.0 Object Library对应Word 2007,如果想创建docx文档,设置word格式时为object format =MSWord.WdSaveFormat.wdFormatDocumentDefault.
(3)如果用到了Excel或者ppt等的控制,要加载相应的COM库文件,Excel的加载如下图所示:
六.总结
最后推荐大家看看这篇博客,它详细介绍了C#操作office文档.http://blog.csdn.net/wudi626/article/details/2337857同时我上面的知识也参看了一些博客,还有刘丽霞等编写的《C#范例开发大全》,在此感谢这些人.这篇文章主要是在做数据库系统中要引用到打印报表,显示为pdf|word格式,所以才写了该文章,后面还想写一篇关于word中插入表格和图片的word操作,至于页面布局等我不想涉及,但思想都是一致的.希望文章对大家有帮助,同时有不足或错误的地方,见谅!
补充:
http://blog.csdn.net/wudi626/article/details/2337857
http://www.cnblogs.com/tanshuicai/archive/2009/06/06/1644629.html
http://blog.sina.com.cn/s/blog_45eaa01a0102vs9j.html
C#操作Office.word(一)的更多相关文章
- C#操作Office.word(二)
在上一篇文章"C#操作Office.word(一)"中我们讲述了如何使用VS2010引用COM中Miscrosoft Word 14.0 Object Library实现创建文档, ...
- C#操作Office.word(三)
前面两篇博客讲解了怎么通过程序控制word的生成,包括生成文字.添加表格.添加图片等.这篇博客主要说一下怎么把word图片转换成pdf. using System; using System.Coll ...
- 使用ABAP编程实现对微软Office Word文档的操作
SAP ABAP里提供了一个标准的类CL_DOCX_DOCUMENT,提供了本地以".docx"结尾的微软Office word文档的读和写操作. 本文介绍了ABAP类CL_DOC ...
- java 使用 POI 操作 XWPFDocumen 创建和读取 Office Word 文档基础篇
注:有不正确的地方还望大神能够指出,抱拳了 老铁! 参考 API:http://poi.apache.org/apidocs/org/apache/poi/xwpf/usermodel/XWPFDoc ...
- 打开office word excel弹出visual studio 2008
打开office word 或者excel或者ppt等文档就会弹出visual studio 2008正在配置对话框. 按照我下面的步骤,解决方法非常简单. 如果你的电脑是win7操作系统,从第一步开 ...
- 【Office Word】论文排版有关技巧
本文分两部分,第一部分呢是Word中标题的编号以及图表的编号:第二部分是MathType中公式编号的右对齐方法. 1. word中标题的编号以及图表的编号 本部分转载自:http://blog ...
- Atitit.office word excel ppt pdf 的web在线预览方案与html转换方案 attilax 总结
Atitit.office word excel ppt pdf 的web在线预览方案与html转换方案 attilax 总结 1. office word excel pdf 的web预览要求 ...
- Microsoft office word关闭英文输入首字母大写设置
1.概述: 在使用office word的时,经常出现输入一段不需首字母大写的英文时,通常敲击完回车时word会自动将首字母大写,需要重新将首字母修改成小写,这样操作很不方便.于是需要对这个功能进行一 ...
- Java操作Microsoft Word之jacob
转自: 现在我们一起来看看,用Java如何操作Microsoft Word. jacob,官网是http://danadler.com/jacob 这是一个开源的工具.最新版本1.7 官方 ...
随机推荐
- 【FZU】2152 文件系统
Problem 2152 文件系统 Accept: 63 Submit: 126 Time Limit: 1000 mSec Memory Limit : 32768 KB Probl ...
- Gallery平滑移动
看了些网上的方法弄了下平滑移动的效果,虽说最后是实现了,实现后发现也不是我想要的效果,对于我幸苦写过的代码先存放在这上面了 package com.layout; import android.con ...
- python 【第三篇】:函数及参数
函数背景 在学习函数之前,一直遵循:面向过程编程: 根据业务逻辑从上到下实现功能,其往往用一长段代码来实现指定功能,开发过程中最常见的操作就是粘贴复制,也就是将之前实现的代码块复制到现需功能处,如下: ...
- 如何解决innnerText的兼容性问题
//获dom对象的innerText的取值 function getInnerText(element) { //判断当前浏览器是否支持innerText if(typeof element.inne ...
- SQL学习之使用视图
1.简介:视图是虚拟的表.与包含的数据不一样,视图只包含使用时动态检索数据的查询.重点:视图是一个查询,不是一个表!
- matlab GUI之常用对话框(二)-- 进度条的使用方法
常用对话框(二) 进度条 waitbar 调用格式: h = waitbar(x,'message') waitbar(x,'message','CreateCancelBtn','button ...
- Css元素布局定位
<!DOCTYPE HTML> <html lang="zh-cn"> <head> <meta charset="UTF-8& ...
- iOS实践01
去年放假之前大概完成了新浪微博项目,到现在也忘得差不多了,打算在重新写一遍.之前的一些笔记在新浪的博客SleenXiu,在这主要是把新浪微博以随笔的形式写在这,方便以后的复习. 先看看之前主要完成的几 ...
- JavaScript中的闭包理解
原创文章,转载请注明:JavaScript中的闭包理解 By Lucio.Yang 1.JavaScript闭包 在小学期开发项目的时候,用node.js开发了服务器,过程中遇到了node.js的第 ...
- mahout算法源码分析之Collaborative Filtering with ALS-WR 并行思路
Mahout版本:0.7,hadoop版本:1.0.4,jdk:1.7.0_25 64bit. mahout算法源码分析之Collaborative Filtering with ALS-WR 这个算 ...