C# 根据Word模板,填写内容

转自:http://www.cnblogs.com/herbert200807/p/4551355.html

适合模板写入

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

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

 

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

 

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

 

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

 

目标效果

(图1)

 

 


 

 


 

 

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

 

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

 

WORD DLL

(图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文档输出就完成了。


  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值