今天正好有人问我,怎么生成一个报表式的Word文档。
就是文字的样式和位置相对固定不变,只是里面的内容从数据中读取。
我觉得类似这种的一般用第三方报表来做比较简便。但既然要求了Word,只好硬着头皮来。
网上的方法大多数都是从一个GridView或表中获得数据后向Word中添加一个表格。
但不方便实现下面的效果(图1)。(以下插图可能需要CSDN用户登录后才能看到)
我们使用Word模板来实现,方法如下:
1、首先需要向工程中的&引用&加入Word类库的引用(图2)。我是Office 2003。其他版本可能略有不同。在COM里面。
2、用Word设计一个模板文档(后缀名*.dot)。(图3)
3、向模板中的需要显示动态内容的地方添加书签。具体方法是。光标落到欲插入内容的地方,选择菜单栏上的&插入&&&〉&书签&(图4)
(图4)在&备注:&的后面添加一个书签,名字叫"beizhu"。书签名字不能以数字开头。
4、完成全部书签的添加,依次应该是:
姓名右侧单元格
性别右侧单元格
生日右侧单元格
籍贯右侧单元格
5、保存这个已完成的模板到任意路径,例如 X:/template.dot
6、在工程的窗体的类中添加引用的命名空间
7、为了省事,直接在窗体的Load事件中加入以下代码。
//**********************************************
//来自博客http://blog.csdn.net/fujie724
//**********************************************
object oMissing = System.Reflection.Missing.V
//创建一个Word应用程序实例
Word._Application oWord= new Word.Application();
//设置为不可见
oWord.Visible =
//模板文件地址,这里假设在X盘根目录
object oTemplate = "X://template.dot";
//以模板为基础生成文档
Word._Document oDoc = oWord.Documents.Add(ref oTemplate, ref oMissing, ref oMissing, ref oMissing);
//声明书签数组
object[] oBookMark = new object[5];
//赋值书签名
oBookMark[0] = "beizhu";
oBookMark[1] = "name";
oBookMark[2] = "sex";
oBookMark[3] = "birthday";
oBookMark[4] = "hometown";
//赋值任意数据到书签的位置
oDoc.Bookmarks.get_Item(ref oBookMark[0]).Range.Text = "使用模板实现Word生成";
oDoc.Bookmarks.get_Item(ref oBookMark[1]).Range.Text = "李四";
oDoc.Bookmarks.get_Item(ref oBookMark[2]).Range.Text = "女";
oDoc.Bookmarks.get_Item(ref oBookMark[3]).Range.Text = "";
oDoc.Bookmarks.get_Item(ref oBookMark[4]).Range.Text = "贺州";
//弹出保存文件对话框,保存生成的Word
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "Word Document(*.doc)|*.doc";
sfd.DefaultExt = "Word Document(*.doc)|*.doc";
if (sfd.ShowDialog() == DialogResult.OK)
object filename = sfd.FileN
oDoc.SaveAs(ref filename, ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing);
oDoc.Close(ref oMissing, ref oMissing, ref oMissing);
//关闭word
oWord.Quit(ref oMissing, ref oMissing, ref oMissing);
8、运行后直接弹出保存文件对话框(因为写在了Load事件里)。保存为Doc文档,打开发现效果如下(图5)
至此,大功告成,文档中的内容正是我们所设定的。一个简单而又快捷的固定格式Word文档输出就完成了。
希望对需要的朋友有帮助。
以上完整教程为个人劳动成果,转载请注明出处。谢谢。
本文已收录于以下专栏:
相关文章推荐
这篇文章主要介绍了C#实现通过模板自动创建Word文档的方法,详细讲述了C#生成Word文档的实现方法,是非常实用的技巧,需要的朋友可以参考下
本文实例讲述了C#实现通过模板自动...
本文中主要介绍C#中对word文档进行新建、打开、保存、关闭的方法。在本次试验之前,先布置试验环境。首先,先新建一个winform的工程WordTest:
然后,在界面中添加一个按...
一、步骤:
1.在Word中建立书签;
2.编写C#代码:
using System.Collections.G
using System.T
using Word = Microsoft.Office....
StreamWriter writer = new StreamWriter(&D:\a.doc”, false, Encoding.GetEncoding(&gb2312&));
#region 获取到各用户的签名图片,并且插入到我惹的中
stri...
他的最新文章
讲师:王哲涵
讲师:王渊命
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)我如何使用一个脚本把 Word 文档保存为文本文件?
我的图书馆
我如何使用一个脚本把 Word 文档保存为文本文件?
我如何使用一个脚本把 Word 文档保存为文本文件?
嗨,Scripting Guy!我有一系列 Word 文件。我想打开这些文件中的每一个并将它们另存为纯文本文件。有没有一种通过使用脚本实现此目的的方法呢?
您好,CG。是的,使用一个脚本,您很容易实现此目的。事实上,除了极少例外情况之外,您在 Microsoft Office 程序中可以做到的事情基本上都可以使用一个脚本来完成。在 Word 中,您可以使用“文件”–“另存为”将 Word 文档另存为文本文件。您也可以使用一个脚本做同样的事情。实际上,您可以使用以下脚本实现此目的:
Const wdFormatText = 2
Set objWord = CreateObject("Word.Application")
Set objDoc = objWord.Documents.Open("c:\scripts\mylog.doc")
objDoc.SaveAs "c:\scripts\mylog.txt", wdFormatText
objWord.Quit
我们先创建一个名为“wdFormatText”的常量,然后将值 2 分配给它;此常量将用于告诉 Word 我们希望新文件保存为一个文本文件。然后我们创建一个 Microsoft Word 实例,使用“打开”方法打开文件 C:\Scripts\MyLog.doc。文档打开之后,我们只需要一行代码就可将此 Word 文档另存为文本文件:
objDoc.SaveAs "c:\scripts\mylog.txt", wdFormatText
As you can see, we call the SaveAs method, and we pass it two parameters: 1) C:\Scripts\MyLog.txt, which is the path f and, 2) wdFormatText, which tells Word to save the file as plain text.这样就可以了。然后我们使用“Quit”方法关闭 Word 实例。
两个重要注意事项。第一,您在屏幕上看不到任何正在发生的事情,因为,默认情况下,无论何时您从一个脚本中调用 Word,它都将运行在一个不可见窗口中。如果您希望看到它在屏幕上弹出,保存文件,然后消失,请使用以下代码:
Const wdFormatText = 2
Set objWord = CreateObject("Word.Application")
objWord.Visible = TRUE
Set objDoc = objWord.Documents.Open("c:\scripts\mylog.doc")
objDoc.SaveAs "c:\scripts\mylog.txt", wdFormatText
objWord.Quit
唯一的不同之处在于:我们将“Visible”属性设置为 TRUE。
第二,您可以将 Word 文档另存为纯文本以外的格式。例如,使用常量 wdFormatHTML(值 = 8)将 Word 文档另存为 HTML 文件;使用常量 wdFormatXML(值 = 11)将 Word 文档另存为 XML 文件。
冒着被误认为是在做商业宣传的风险告诉您:如果您想了解关于脚本和 Microsoft Office 的更多信息,欢迎访问“Scripting Week 2”网络广播(如果您想把事情做好,请让 Microsoft Office 来帮助您)-- 2005 年 1 月 25 日为您播出。
TA的最新馆藏
喜欢该文的人也喜欢