天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

.net下實現Word動態填加數據打印

今天研究了一下.NET下實現Word動態填加數據打印的做法,覺得頗有收獲~
      以前做過Excel相關的東西,所以對OFFICE的COM有一些了解,很順利的找到了需要引用的COM和其幫助文檔~具體做法是在引用里添加 COM --------Microsoft word 11.0 object library, 然后引入命名空間:
復制代碼 代碼如下:
using WordApplication = Microsoft.Office.Interop.Word.Application; 
using Document = Microsoft.Office.Interop.Word.Document; 
using Bookmark = Microsoft.Office.Interop.Word.Bookmark; 
具體實現代碼: 

WordApplication word = null; 
 /**//// <summary> 
 /// 實現動態添加數據打印預覽 
 /// </summary> 
/// <param name="path">word模板路徑</param> 
/// <param name="adStu">調劑學生相關信息對象</param> 
private void PrintPreview(string path, AdStuInfo adStu) 
        ...{ 
            if (word == null) 
            ...{ 
                word = new WordApplication(); 
            } 
            object oMissing = System.Reflection.Missing.Value;   //這個東西找了好久,不像操作Excel,用Type.mising還不行. 
            object path1 = (object)path; 
            Document doc = null; 
            doc = word.Documents.OpenOld(ref path1, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing); 
            替換書簽#region 替換書簽 
                object markName = "報考單位"; 
                Bookmark bm = doc.Bookmarks.get_Item(ref markName); 
                bm.Range.Text = adStu.SiSch; 
                markName = "報考專業"; 
                bm = doc.Bookmarks.get_Item(ref markName); 
                bm.Range.Text = adStu.SiMa; 
                markName = "考生姓名1"; 
                bm = doc.Bookmarks.get_Item(ref markName); 
                bm.Range.Text = adStu.Name; 
                markName = "考生編號"; 
                bm = doc.Bookmarks.get_Item(ref markName); 
                bm.Range.Text = adStu.No; 
                markName = "調劑專業"; 
                bm = doc.Bookmarks.get_Item(ref markName); 
                bm.Range.Text = adStu.AdMa; 
                markName = "打印時間"; 
                bm = doc.Bookmarks.get_Item(ref markName); 
                bm.Range.Text = GetDate().ToString(); 
                markName = "考生姓名2"; 
                bm = doc.Bookmarks.get_Item(ref markName); 
                bm.Range.Text = adStu.Name; 
            #endregion 
                word.Visible = true; 
                doc.PrintPreview(); 
        } 
具體解釋:     首先有一個模板.doc文件,在該模板內需要添加數據的地方設置成書簽,.NET程序所要的事情就是打開該模板,用具體需要添加的值去替換先設定好的書簽,然后返回Word的打印預覽頁面,思路很簡單~但是問題也是有滴~~

這個程序是做打印我們學院研究生辦發復試生調卷函用的,但是表格是從學校研究生部那弄來的,主要還是在那邊蓋的章~所以就只能用那些表格來打,但是給的表格留的空實在太小,沒法用同樣的字體給打上去,怪就只能怪研究生部根本沒想到我們這會有這個高級的東西~~哈哈~估計一般都是手工填的~~~明天過去不知道具體要怎么弄,估計這東西在打印調卷函是發揮不出作用了~~~留著以后肯定有用!

4月16日修改:

       幾天前做的仔細想想還是有需要改進的地方.我前面做的只是一個個文檔的填,一個個的打印,考慮資料上百個以后這樣做打印機的打印的效率不高,因為每次只給打印機發送一個打印任務,它接受下一個任務是需要時間的,所以我的想法是把需要打印的文檔生成成一個文檔,這樣不但可以保存文檔,還可以只要向打印機發送一個任務就可以打印資料了,NB的打印機打印速度是很快的~~

       把具體的操作寫下來吧~思路是打開兩個word文檔(當然,生成過程中全不可見),一個還是按照前面說的替換書簽,但是不做打印處理,而是復制到另外一個文檔(該文檔存儲所有已經生成好的表格,最后得到的就是這個word文檔,打印或者保存隨便他們).具體的代碼如下:

 

先在using里引如:
using Range = Microsoft.Office.Interop.Word.Range;

doc.Content.Copy();    //復制doc里的內容,doc是每次做替換書簽的文檔.
object save = false;               
doc.Close(ref save, ref oMissing, ref oMissing);   //關閉doc.
Range range = printDoc.Content;   //全中printDoc里的全部內容,printDoc是目標保存文檔.
range.Collapse(ref oMissing);   //確定粘貼的位置,其實這個地方我想放一個有效的參數,把粘貼的位置設為文檔的末尾,而不是用默認的文檔的最前面,但是幫助文檔是VB寫的,傳了一個Direction:=wdCollapseEnd的東東,我弄半天沒弄出來,虧我還是懂VB的~~傷心~以至于我都忘了傳個空值過去,卡了老半天!謝謝某人和我發了幾條短信,就一下把我打通了~
range.Paste();    //粘貼到目標位置,一次填寫就完成了.


        雖然是這樣,但是在生成目標文檔的時候也是很耗資源的,我看了一下那程序竟然占了100多M的內存!!而且~~而且~~我的機器在前兩次實驗都沒頂住!死機了~~當時真是在抓狂了~誰知道后來幾次竟然無聲無息的成功!可是想想學院那機器能扛住么~~哎繼續優化吧!這次把界面也改了一下,上面的生成在一的單獨線程里,以至于主界面不會像死了樣的,而且在主界面上還做了個顯示生成狀態的Lable,這東西還真管用~后面兩次的實驗,看著已生成數目超過前兩次死機的數目~~緊張的心情緩解了~再看著數目超過100~~高興了~最后慢慢接近完成數目時~~興奮得抓狂!!!!!哈~~

      哎~廢話多了點~有用的就那么幾行代碼~

AspNet技術.net下實現Word動態填加數據打印,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 日韩免费视频一区 | 手机在线播放成人亚洲影院电影 | 国产成人a视频在线观看 | 亚洲精品喷白浆在线观看 | 亚洲中文久久久久久国产精品 | 成人免费观看在线视频 | 欧美成人3d动漫专区 | 日韩美女爱爱 | 在线视频免费国产成人 | 亚洲精品成A人在线观看 | china中国gay偷拍| 护士日本xx厕所 | 亚洲欧美一区二区三区蜜芽 | 国产精品私人玩物在线观看 | 欧美末成年videos在线 | 天天综合亚洲综合网站 | 中国女人内谢69XXXXXA片 | MD传媒MD0021在线观看 | 在公交车上被JB草坏了被轮J了 | 无码国产精品高潮久久9 | 黑人特黄AA完整性大片 | 一个人看的www视频动漫版 | 国产成人精品视频免费大全 | 亚洲精品乱码久久久久久中文字幕 | 天天日免费观看视频一1 | 亚洲欧美日韩精品自拍 | 美女的让男人桶爽网站 | 国产白丝精品爽爽久久久久久蜜臀 | 国产午夜精品一区二区 | 免费毛片a在线观看67194 | 中文字幕在线免费观看视频 | 少妇内射视频播放舔大片 | jizzjizz中国大学生 | 亚洲欧美一区二区三区久久 | 久久九九有精品国产23百花影院 | 欧美性appstin孕妇 | 黄色a级免费网站 | 免费黄色网址在线观看 | 国产成人精品亚洲线观看 | 久久re热在线视频精99 | 91区国产福利在线观看午夜 |