`

[提供源码下载]在大型软件中用Word做报表:书签的应用(提供一种思路)

 
阅读更多

[提供源码下载]在大型软件中用Word做报表:

书签的应用(提供一种思路)

——通过知识共享树立个人品牌。

报表基本上在每一个项目中占有很大的比例,做报表也是我们开发人员必须过的坎,现在市面上各种类型的报表,我们到底应该如何选择呢?每一种报表都有他自己优秀的一面,我在项目开发中,一般用Grid++Report做报表,对于复杂的,量大的也用ExcelWord来做,大家也可以分享一下你们在项目中用到的报表软件!

现在有这样一个需求,比如有一个几十页的合同(合同内容每年会有所不同),合同中要填的数据(如:甲方、乙方什么的)从数据库中得到,各个页都有可能填写相关数据,最后生成合同打印出来,对于这样的需求,我想要用水晶报表等来做相当麻烦。

本文给大家提供一种思路,就是用Word来做这种类型的报表,具体来说,就是用“书签”定位到Word中要填数据的地方,然后把数据填上去,再把word导出来,灵活应用,以不变应万变。

下面来看具体操作。

步骤一:准备好Word合同模板,在需要填写数据的地方插入书签(不明白的,可以下载源码后自己慢慢看)后保存应模板文件,如下图:

步骤二:新建一个WinForm项目,添加WordDll引用,如下图:

步骤三:编写代码,把相关数据写入到书签中,代码如下:

private void btnWriteDataToWord_Click(object sender, EventArgs e)
{
object missingValue = System.Reflection.Missing.Value;
object fileName = System.Windows.Forms.Application.StartupPath + "\\Test.doc";
if (System.IO.File.Exists(fileName as string))
{
object myTrue = false;
Microsoft.Office.Interop.Word.Application oWord = new Microsoft.Office.Interop.Word.ApplicationClass();
Microsoft.Office.Interop.Word.Document oDoc;
oDoc = oWord.Documents.Open(ref fileName, ref missingValue, ref myTrue,
ref missingValue, ref missingValue, ref missingValue,
ref missingValue, ref missingValue, ref missingValue,
ref missingValue, ref missingValue, ref missingValue,
ref missingValue, ref missingValue, ref missingValue,
ref missingValue);

MessageBox.Show(oDoc.Bookmarks.Count.ToString()); //得到word中的所有书签个数

//写入Word文档
object[] oBookMarks = { "出让方名称", "出让方通讯地址", "出让方邮政编码" };//Word中的书签
string[] sValues = { "测试出让方名称", "测试出让方通讯地址43号", "测试出让方邮政编码432123" }; //给书签的值
for (int iTemp = 0; iTemp < oBookMarks.Length; iTemp++)
{

Microsoft.Office.Interop.Word.Range tmpRng = oWord.ActiveDocument.Bookmarks.get_Item(ref oBookMarks[iTemp]).Range;
tmpRng.Text = sValues[iTemp].ToString(); //通过tmpRng.Text还可以得到标签处的数据,在这儿是设置它的数据
object oRng = tmpRng;
oDoc.Bookmarks.Add(oBookMarks[iTemp].ToString(), ref oRng);

}

object bSaveChange = true;

//如果"D:\Word"目录不存在,就创建
if (!Directory.Exists("D:\\Word"))
{
Directory.CreateDirectory("D:\\Word"); //创建目录
}

string guid = System.Guid.NewGuid().ToString();
object sFileName = @"D:/Word/出让合同" + guid + ".doc";

//把写好的合同另存为
if (oDoc.SaveFormat == (int)Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatDocument)
{
oDoc.SaveAs(ref sFileName, ref missingValue, ref myTrue,
ref missingValue, ref missingValue, ref missingValue,
ref missingValue, ref missingValue, ref missingValue,
ref missingValue, ref missingValue, ref missingValue,
ref missingValue, ref missingValue, ref missingValue,
ref missingValue);
}
oDoc.Close(ref bSaveChange, ref missingValue, ref missingValue);
oWord.Quit(ref bSaveChange, ref missingValue, ref missingValue);
}
else
{
MessageBox.Show("合同模板不存在!");
return;
}
//object tmp = "msr_01";
//Word.Range tmpRng = oWord.ActiveDocument.Bookmarks.get_Item(ref tmp).Range;
//tmpRng.Text = "China";
////由于附值以后书签自动消除,为了以后便于修改,需要把书签再自动生成一个
//object oRng = tmpRng;
//oDoc.Bookmarks.Add(tmp.ToString(), ref oRng);
//object bSaveChange = true;
//oDoc.Close(ref bSaveChange, ref missingValue, ref missingValue);
}
}

步骤四:查看效果,如下图所示:

源码下载(下载前请评论与推荐下,感谢)

本文只是提供一种解决问题的思路,欢迎大家拍砖,也分享一下你们的经验。

© 2011 EricHu

原创作品,转贴请注明作者和出处,留此信息。

------------------------------------------------

cnBlobs:http://www.cnblogs.com/huyong/
CSDN:http://blog.csdn.net/chinahuyong

作者:EricHu(DB、C\S、B\S、WebService、WCF、PM等)
出处:http://www.cnblogs.com/huyong/

Q Q:80368704 E-Mail: 80368704@qq.com
本博文欢迎大家浏览和转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,在『参考』的文章中,我会表明参考的文章来源,尊重他人版权。若您发现我侵犯了您的版权,请及时与我联系。
更多文章请看 [置顶]索引贴——(不断更新中)

分享到:
评论

相关推荐

    (Word做报表:书签的应用源码

    .net 开发 Word做报表:书签的应用源码

    Oracle数据库表结构导出成Word文档工具(带源码下载)

    Oracle数据库表结构导出成Word文档工具(带源码下载) 修改了一下数据库的连接方式:由于我安装的是win764位+office64+oracle client 32位,用MSDAORA.1无法连接,所以将MSDAORA.1换为OraOleDb.Oracle.1,换后正常连接...

    java源码包---java 源码 大量 实例

     Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码,...

    敏捷软件开发:原则、模式与实践(带书签,源码)

    敏捷软件开发:原则、模式与实践(带书签,源码)

    C# 打印与报表技术 源码

    如何报表数据分组  如何报表中筛选数据  如何对分组报表中的页码进行设置  报表的应用技巧  如何在水晶报表中使用交叉表  如何在水晶报表中使用子报表  如何动态显示子报表  如何...

    通用软件系统平台源码

    通用软件系统平台是国人写的一个开源系统软件,系统用C++实现,同时源码也有C版本(C++ToC编译器自动编译),可以用于PC、移动应用、和嵌入式开发(C语言版本)。基于该平台编写的应用程序不需修改,可以在任何平台...

    快逸报表4.0免费版

    快逸报表4.0 Free版——Java版Excel、即时连接数据库、快速开发Web报表的免费报表软件。 快逸报表是由国内最大的web报表软件开发商北京润乾信息系统技术有限公司出品,是国内最简单的开发web报表的网络报表软件。...

    C#完全自定义报表源码

    自定义报表源码 自定义 报表 源码

    java源码包2

     Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码...

    vc++ 应用源码包_3

    CCAMS系统是一种用于局域网下的CS模式的软件管理和监测系统源码 它包括客户端和服务端,客户端软件主要作用是监测本主机的活动,并将监测到的信息定时发送给服务器。服务器可以将收集到的信息以柱状图和文件列表以及...

    Crystal Reports 9.2 中文版(水晶报表)

    Crystal Reports 9.2 中文版(水晶报表) 下载,,软件版本:9.2.0.448不过现已出了Crystal Reports Professional v9.2.2.634 (c) Crystal Decisions,有足够的空间就提供.这是一个很不错的报表控件,我相信很多朋友都听说...

    JAVA上百实例源码以及开源项目

     Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码,...

    智能物业管理系统源码(也适合大型集团使用)+说明文档(包括所有的需要说明文档)+开题报告+论文+源码

    在这种背景下,应用科技公司凭借雄厚的技术实力和多年来给大型优秀物业管理公司提供物业管理软件系统的成功经验,融汇全国数百家物业管理公司的优秀经验和管理智慧,采用最先进的.NET技术平台,推出了基于B/S模式的...

    poi3.9+操作docx文件书签_源码_jar包_实例

    使用poi3.9操作docx中书签,实现书签的替换,书签实现word中表格的新增行功能。包括实例类,工具类,poi3.9 jar包

    java源码包4

     Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码...

    《Android应用开发详解》源码

    《Android应用开发详解》源码,完整版,值得看一看。 《Android核心技术和开发...然后会向读者讲解如何搭建.Android的开发环境、如何在Eclipse中创建一个项目,以及如何使用Android平台提供的工具调试和监控应用程序。

    VC++编程技术600个大型项目源码.rar

    vc++编程技术600个大型项目源码(一).doc vc++编程技术600个大型项目源码(二).doc vc++编程技术600个大型项目源码(三).doc vc++编程技术600个大型项目源码(四).doc vc++编程技术600个大型项目源码(六).doc vc++编程...

    word2vec词向量训练及中文文本相似度计算 【源码+语料】

    该资源主要参考我的博客:word2vec词向量训练及中文文本相似度计算 http://blog.csdn.net/eastmount/article/details/50637476 其中包括C语言的Word2vec源代码(从官网下载),自定义爬取的三大百科(百度百科、互动...

    java源码包3

     Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码...

    Android应用源码完整功能版机锋安卓市场

    本项目是机锋市场的完整功能版客户端项目源码 并非只有UI布局的项目 机锋市场作为国内数一数二的正规安卓市场其客户端项目有非常大的借鉴和学习意义的 项目运行以后会提示更新 选择否 点击任意软件即可下载 下载的...

Global site tag (gtag.js) - Google Analytics