[提供源碼下載]在大型軟件中用Word做報表:書簽的應用(提供一種思路)
[提供源碼下載]在大型軟件中用Word做報表:
書簽的應用(提供一種思路)
——通過知識共享樹立個人品牌。
報表基本上在每一個項目中占有很大的比例,做報表也是我們開發(fā)人員必須過的坎,現(xiàn)在市面上各種類型的報表,我們到底應該如何選擇呢?每一種報表都有他自己優(yōu)秀的一面,我在項目開發(fā)中,一般用Grid++Report做報表,對于復雜的,量大的也用Excel和Word來做,大家也可以分享一下你們在項目中用到的報表軟件!
現(xiàn)在有這樣一個需求,比如有一個幾十頁的合同(合同內(nèi)容每年會有所不同),合同中要填的數(shù)據(jù)(如:甲方、乙方什么的)從數(shù)據(jù)庫中得到,各個頁都有可能填寫相關(guān)數(shù)據(jù),最后生成合同打印出來,對于這樣的需求,我想要用水晶報表等來做相當麻煩。
本文給大家提供一種思路,就是用Word來做這種類型的報表,具體來說,就是用“書簽”定位到Word中要填數(shù)據(jù)的地方,然后把數(shù)據(jù)填上去,再把word導出來,靈活應用,以不變應萬變。
下面來看具體操作。
步驟一:準備好Word合同模板,在需要填寫數(shù)據(jù)的地方插入書簽(不明白的,可以下載源碼后自己慢慢看)后保存應模板文件,如下圖:

步驟二:新建一個WinForm項目,添加Word的Dll引用,如下圖:

步驟三:編寫代碼,把相關(guān)數(shù)據(jù)寫入到書簽中,代碼如下:
{
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中的所有書簽個數(shù)
//寫入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還可以得到標簽處的數(shù)據(jù),在這兒是設置它的數(shù)據(jù)
object oRng = tmpRng;
oDoc.Bookmarks.Add(oBookMarks[iTemp].ToString(), ref oRng);
}
object bSaveChange = true;
//如果"D:\Word"目錄不存在,就創(chuàng)建
if (!Directory.Exists("D:\\Word"))
{
Directory.CreateDirectory("D:\\Word"); //創(chuàng)建目錄
}
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);
}
}
步驟四:查看效果,如下圖所示:

源碼下載(下載前請評論與推薦下,感謝)
本文只是提供一種解決問題的思路,歡迎大家拍磚,也分享一下你們的經(jīng)驗。
作者:
RDIF
出處:
http://www.rzrgm.cn/huyong/
Email:
406590790@qq.com
QQ:
406590790
微信:
13005007127(同手機號)
框架官網(wǎng):
http://www.guosisoft.com/
http://www.rdiframework.net/
框架其他博客:
http://blog.csdn.net/chinahuyong
http://www.rzrgm.cn/huyong
國思RDIF開發(fā)框架
,
給用戶和開發(fā)者最佳的.Net框架平臺方案,為企業(yè)快速構(gòu)建跨平臺、企業(yè)級的應用提供強大支持。
關(guān)于作者:系統(tǒng)架構(gòu)師、信息系統(tǒng)項目管理師、DBA。專注于微軟平臺項目架構(gòu)、管理和企業(yè)解決方案,多年項目開發(fā)與管理經(jīng)驗,曾多次組織并開發(fā)多個大型項目,在面向?qū)ο蟆⒚嫦蚍找约皵?shù)據(jù)庫領(lǐng)域有一定的造詣。現(xiàn)主要從事基于
RDIF
框架的技術(shù)開發(fā)、咨詢工作,主要服務于金融、醫(yī)療衛(wèi)生、鐵路、電信、物流、物聯(lián)網(wǎng)、制造、零售等行業(yè)。
如有問題或建議,請多多賜教!
本文版權(quán)歸作者和CNBLOGS博客共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,如有問題,可以通過微信、郵箱、QQ等聯(lián)系我,非常感謝。

報表基本上在每一個項目中占有很大的比例,做報表也是我們開發(fā)人員必須過的坎,現(xiàn)在市面上各種類型的報表,我們到底應該如何選擇呢?每一種報表都有他自己優(yōu)秀的一面,我在項目開發(fā)中,一般用Grid++Report做報表,對于復雜的,量大的也用Excel和Word來做,大家也可以分享一下你們在項目中用到的報表軟件!
現(xiàn)在有這樣一個需求,比如有一個幾十頁的合同(合同內(nèi)容每年會有所不同),合同中要填的數(shù)據(jù)(如:甲方、乙方什么的)從數(shù)據(jù)庫中得到,各個頁都有可能填寫相關(guān)數(shù)據(jù),最后生成合同打印出來,對于這樣的需求,我想要用水晶報表等來做相當麻煩。
本文給大家提供一種思路,就是用Word來做這種類型的報表, 具體來說,就是用“書簽”定位到Word中要填數(shù)據(jù)的地方,然后把數(shù)據(jù)填上去,再把word導出來,靈活應用,以不變應萬變。
浙公網(wǎng)安備 33010602011771號