c#中操作word文档-一、模板方式写入

转载自:http://blog.csdn.net/fujie724/article/details/5443322

适合模板写入

今天正好有人问我,怎么生成一个报表式的Word文档。

就是文字的样式和位置相对固定不变,只是里面的内容从数据中读取。

我觉得类似这种的一般用第三方报表来做比较简便。但既然要求了Word,只好硬着头皮来。

网上的方法大多数都是从一个GridView或表中获得数据后向Word中添加一个表格。

但不方便实现下面的效果(图1)。(以下插图可能需要CSDN用户登录后才能看到)

(图1)




我们使用Word模板来实现,方法如下:

1、首先需要向工程中的“引用”加入Word类库的引用(图2)。我是Office 2003。其他版本可能略有不同。在COM里面。

(图2)

2、用Word设计一个模板文档(后缀名*.dot)。(图3)

(图3)

3、向模板中的需要显示动态内容的地方添加书签。具体方法是。光标落到欲插入内容的地方,选择菜单栏上的“插入”——〉“书签”(图4)

(图4)在“备注:”的后面添加一个书签,名字叫"beizhu"。书签名字不能以数字开头。

4、完成全部书签的添加,依次应该是:

位置 书签名
备注右侧 beizhu
姓名右侧单元格 name
性别右侧单元格 sex
生日右侧单元格 birthday
籍贯右侧单元格 hometown

5、保存这个已完成的模板到任意路径,例如 X:/template.dot

6、在工程的窗体的类中添加引用的命名空间

1 using Word;

7、为了省事,直接在窗体的Load事件中加入以下代码。

 1 //**********************************************
 2 //来自博客http://blog.csdn.net/fujie724
 3 //**********************************************
 4 object oMissing = System.Reflection.Missing.Value;
 5 //创建一个Word应用程序实例
 6 Word._Application oWord= new Word.Application();
 7 //设置为不可见
 8 oWord.Visible = false;
 9 //模板文件地址,这里假设在X盘根目录
10 object oTemplate = "X://template.dot";
11 //以模板为基础生成文档
12 Word._Document oDoc = oWord.Documents.Add(ref oTemplate, ref oMissing, ref oMissing, ref oMissing);
13 //声明书签数组
14 object[] oBookMark = new object[5];
15 //赋值书签名
16 oBookMark[0] = "beizhu";
17 oBookMark[1] = "name";
18 oBookMark[2] = "sex";
19 oBookMark[3] = "birthday";
20 oBookMark[4] = "hometown";
21 //赋值任意数据到书签的位置
22 oDoc.Bookmarks.get_Item(ref oBookMark[0]).Range.Text = "使用模板实现Word生成";
23 oDoc.Bookmarks.get_Item(ref oBookMark[1]).Range.Text = "李四";
24 oDoc.Bookmarks.get_Item(ref oBookMark[2]).Range.Text = "女";
25 oDoc.Bookmarks.get_Item(ref oBookMark[3]).Range.Text = "1987.06.07";
26 oDoc.Bookmarks.get_Item(ref oBookMark[4]).Range.Text = "贺州";
27 //弹出保存文件对话框,保存生成的Word
28 SaveFileDialog sfd = new SaveFileDialog();
29 sfd.Filter = "Word Document(*.doc)|*.doc";
30 sfd.DefaultExt = "Word Document(*.doc)|*.doc";
31 if (sfd.ShowDialog() == DialogResult.OK)
32 {
33    object filename = sfd.FileName;
34
35    oDoc.SaveAs(ref filename, ref oMissing, ref oMissing, ref oMissing,
36    ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
37    ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
38    ref oMissing, ref oMissing);
39    oDoc.Close(ref oMissing, ref oMissing, ref oMissing);
40    //关闭word
41    oWord.Quit(ref oMissing, ref oMissing, ref oMissing);
42 }

8、运行后直接弹出保存文件对话框(因为写在了Load事件里)。保存为Doc文档,打开发现效果如下(图5)

(图5)

至此,大功告成,文档中的内容正是我们所设定的。一个简单而又快捷的固定格式Word文档输出就完成了。

希望对需要的朋友有帮助。

以上完整教程为个人劳动成果,转载请注明出处。谢谢。

时间: 2024-10-14 16:26:51

c#中操作word文档-一、模板方式写入的相关文章

2.QT中操作word文档

 Qt/Windows桌面版提供了ActiveQt框架,用以为Qt和ActiveX提供完美结合.ActiveQt由两个模块组成: A   QAxContainer模块允许我们使用COM对象并且可以在Qt应用程序中嵌入QActive控件. B   QAxServer模块允许我们导出使用Qt编写的自定义的COM对象和Active控件. C   在这里,我们使用了QAxContainer模块,所以在.pro中,需要使用下面这一项来链接这个QAxContainer模块:CONFIG+=qaxcont

c#中操作word文档-二、比较全的一份示例

最近两天研究了一下如何使用VS2008(C#语言)输出Word文档.以下是几点总结: 1.非常简单. 2.开发及运行环境要求.操作系统为:WindowsXP(安装.net framework2.0)/Vista/Win7:在操作系统必须安装Word2003完全安装版.这里必须要强调是Word2003完全安装版,因为软件开发及运行都需要一个com组件:Microsoft word 11.0 Object Library.如果不是Word2003完全安装版,可以下载这个com组件,并手动的安装这个c

c#中操作word文档-四、对象模型

转自:http://blog.csdn.net/ruby97/article/details/7406806 Word对象模型  (.Net Perspective) 本文主要针对在Visual Studio中使用C# 开发关于Word的应用程序 来源:Understandingthe Word Object Model from a .NET Developer's Perspective 五大对象 Application           :代表Microsoft Word应用程序本身 D

C# 中使用word文档对图像进行操作

C# 中使用Word文档对图像进行操作 Download Files: ImageOperationsInWord.zip 简介 在这篇文章中我们可以学到在C#程序中使用一个Word文档对图像的各种操作.图像会比阅读文字更有吸引力,而且图像是与内容紧密相关的.有时图像可以将内容描述的更为清晰,就像使用图表显示某一周期内的数据变化. Spire.Doc for .NET(http://www.e-iceblue.com/Introduce/Word-for-net-introduce.html)是

c#操作Word文档

c#操作Word文档 using System; using System.Collections.Generic; using System.Linq; using System.Web; using Word = Microsoft.Office.Interop.Word; using System.Reflection; using System.Text.RegularExpressions; using System.IO; namespace WebWord { public cla

C#操作Word文档(加密、解密、对应书签插入分页符)

原文:C#操作Word文档(加密.解密.对应书签插入分页符) 最近做一个项目,客户要求对已经生成好的RTF文件中的内容进行分页显示,由于之前对这方面没有什么了解,后来在网上也找了相关的资料,并结合自己在MSDN上面的查找,后来总算把问题给解决掉啦.下面对C#操作Word文档(加密.解密.插入分页符)做一个简单的总结,希望对一些朋友有所帮忙吧.^_^ 写代码之前,需要引用对应的DLL文件: 1.Interop.Microsoft.Office.Interop.Word.dll  (网上可以下载)

在Delphi中处理word文档与数据库的互联 1

在Delphi中处理word文档与数据库的互联 ---- 目前,Delphi被越来越多的人选中作为MIS系统开发中的前台工具.在以Delphi为前台,一些大型数据库为后台的MIS系统中,图形的处理不可避免:即从以Delphi开发的前台界面输入图形,并保存到相应的数据库字段中.在这种形式的图形处理中,BMP文件的处理比较简单,因为Delphi本身有Image和DBImage构件,用这些构件与数据库中可以保存图形的大型字段BLOB比较容易地进行数据交换.以这种方式进行图形处理已应用在许多MIS软件中

IOS 预览pdf,word文档的集中方式

在iPhone中可以很方便的预览文档文件,如:pdf.word等等,这篇文章将以PDF为例.介绍三种预览PDF的方式,又分别从本地pdf文档和网络上的pdf文档进行对比. 预览本地PDF文档: 1.使用UIWebView控件 UIWebView是iPhone开发中最常用的控件之一,类似.net中的webBrowser控件.使用它预览PDF文件相当的方便和简单. 在UIWebView中预览PDF文档的关键代码如下: 效果: 2.使用CLPreviewController CLPreviewCont

Asp.net操作Word文档,原来这么简单啊!

引用Word对象库文件  具体做法是打开菜单栏中的项目>添加引用>浏览,在打开的“选择组件”对话框中找到MSWORD.OLB后按确定即可引入此对象库文件,vs.net将会自动将库文件转化为DLL组件,这样我们只要在源码中创建该组件对象即可达到操作Word的目的! 如图 这会自动在你的应用程序文件夹中放置一个程序集(assembly)将COM接口邦定到Word. 上传并存储word文件 上传文件时首先通过上传控件找到所需上传的文件,然后获取文件的大小,最后以流的形式写入数据库 具体代码为 C#