亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#實現通過模板自動創建Word文檔的方法

2020-01-24 02:24:39
字體:
來源:轉載
供稿:網友

本文實例講述了C#實現通過模板自動創建Word文檔的方法,是非常實用的技巧。分享給大家供大家參考。具體實現方法如下:

引言:前段時間有項目要用c#生成Word格式的計算報告,通過網絡查找到很多內容,但是都很凌亂,于是自己決定將具體的步驟總結整理出來,以便于更好的交流和以后相似問題可以迅速的解決!

現通過具體的示例演示具體的步驟:
 
第一步,制作模板
 
1.新建一個文檔,設置文檔內容。
2.在相應位置插入書簽;將鼠標定位到要插入書簽的位置,點擊“插入”>“書簽”,彈出對話框,輸入書簽名,點擊“添加”按鈕。
3.保存模板,命名為“模板1.dot”或者“模板1.doc”

第二步,設置項目中的引用

1.右擊“解決方案資源管理器”中的項目目錄下的“引用”,選擇“添加引用”,打開“添加引用”對話框
2.在“添加引用”對話框中,選擇“COM”>“Microsoft Word 11.0 Object Library”,點擊“確定”按鈕
3.相同操作打開“添加引用”對話框中,選擇“瀏覽”項,查找到”Microsoft.Office.Interop.Word.dll”文件,選中它,點擊“確定”按鈕
 
注意:此處要查找的“Microsoft.Office.Interop.Word.dll”版本必須為“11.*.*.*”,“*”代表數字

第三步,編碼

這一步分成兩個部分
第一部分,Report類的編碼
這部分我已經封裝好,為文件“Report.cs”,可以直接使用

具體實現代碼如下:(代碼中有比較詳細的注釋)

using System;using System.Collections.Generic;using System.Text;using Microsoft.Office.Interop.Word; namespace MYNAMESPACE //這邊需要換成自己的命名空間名{  classReport  {    private_ApplicationwordApp= null;    private_DocumentwordDoc= null;    public_ApplicationApplication    {      get      {        return wordApp;      }      set      {        wordApp = value;      }    }    public_DocumentDocument    {      get      {        return wordDoc;      }      set      {        wordDoc = value;      }    }     //通過模板創建新文檔    publicvoidCreateNewDocument(stringfilePath)    {      killWinWordProcess();      wordApp= new ApplicationClass();      wordApp.DisplayAlerts =WdAlertLevel.wdAlertsNone;      wordApp.Visible =false;      objectmissing =System.Reflection.Missing.Value;      objecttemplateName =filePath;      wordDoc= wordApp.Documents.Open(reftemplateName, refmissing,        ref missing, ref missing,ref missing, ref missing, refmissing,        ref missing, ref missing,ref missing, ref missing, refmissing,        ref missing, ref missing,ref missing, ref missing);    }     //保存新文件    publicvoidSaveDocument(stringfilePath)    {      objectfileName =filePath;      objectformat =WdSaveFormat.wdFormatDocument;//保存格式      objectmiss =System.Reflection.Missing.Value;      wordDoc.SaveAs(reffileName, ref format, ref miss,        ref miss, ref miss,ref miss, ref miss,        ref miss, ref miss,ref miss, ref miss,        ref miss, ref miss,ref miss, ref miss,        ref miss);      //關閉wordDoc,wordApp對象      objectSaveChanges =WdSaveOptions.wdSaveChanges;      objectOriginalFormat =WdOriginalFormat.wdOriginalDocumentFormat;      objectRouteDocument =false;      wordDoc.Close(refSaveChanges, refOriginalFormat, refRouteDocument);      wordApp.Quit(refSaveChanges, refOriginalFormat, refRouteDocument);    }     //在書簽處插入值    publicboolInsertValue(stringbookmark, stringvalue)    {      objectbkObj =bookmark;      if(wordApp.ActiveDocument.Bookmarks.Exists(bookmark))      {        wordApp.ActiveDocument.Bookmarks.get_Item(refbkObj).Select();        wordApp.Selection.TypeText(value);        return true;      }      returnfalse;    }     //插入表格,bookmark書簽    publicTableInsertTable(stringbookmark, int rows, int columns,float width)    {      objectmiss =System.Reflection.Missing.Value;      objectoStart =bookmark;      Rangerange =wordDoc.Bookmarks.get_Item(refoStart).Range;//表格插入位置      TablenewTable =wordDoc.Tables.Add(range,rows, columns, ref miss, refmiss);      //設置表的格式      newTable.Borders.Enable =1; //允許有邊框,默認沒有邊框(為0時報錯,1為實線邊框,2、3為虛線邊框,以后的數字沒試過)      newTable.Borders.OutsideLineWidth=WdLineWidth.wdLineWidth050pt;//邊框寬度      if(width != 0)      {        newTable.PreferredWidth=width;//表格寬度      }      newTable.AllowPageBreaks =false;      returnnewTable;    }     //合并單元格 表名,開始行號,開始列號,結束行號,結束列號    publicvoidMergeCell(Microsoft.Office.Interop.Word.Tabletable, int row1, int column1,int row2, int column2)    {      table.Cell(row1,column1).Merge(table.Cell(row2,column2));    }     //設置表格內容對齊方式Align水平方向,Vertical垂直方向(左對齊,居中對齊,右對齊分別對應Align和Vertical的值為-1,0,1)    publicvoidSetParagraph_Table(Microsoft.Office.Interop.Word.Tabletable, int Align, int Vertical)    {      switch(Align)      {        case -1:table.Range.ParagraphFormat.Alignment=WdParagraphAlignment.wdAlignParagraphLeft;break;//左對齊        case 0: table.Range.ParagraphFormat.Alignment=WdParagraphAlignment.wdAlignParagraphCenter;break;//水平居中        case 1: table.Range.ParagraphFormat.Alignment=WdParagraphAlignment.wdAlignParagraphRight;break;//右對齊      }      switch(Vertical)      {        case -1: table.Range.Cells.VerticalAlignment=WdCellVerticalAlignment.wdCellAlignVerticalTop;break;//頂端對齊        case 0: table.Range.Cells.VerticalAlignment=WdCellVerticalAlignment.wdCellAlignVerticalCenter;break;//垂直居中        case 1: table.Range.Cells.VerticalAlignment=WdCellVerticalAlignment.wdCellAlignVerticalBottom;break;//底端對齊      }    }     //設置表格字體    publicvoidSetFont_Table(Microsoft.Office.Interop.Word.Tabletable, string fontName, double size)    {      if(size != 0)      {        table.Range.Font.Size =Convert.ToSingle(size);      }      if(fontName !="")      {        table.Range.Font.Name =fontName;      }    }     //是否使用邊框,n表格的序號,use是或否    publicvoidUseBorder(int n,bool use)    {      if(use)      {        wordDoc.Content.Tables[n].Borders.Enable =1; //允許有邊框,默認沒有邊框(為0時無邊框,1為實線邊框,2、3為虛線邊框,以后的數字沒試過)      }      else      {        wordDoc.Content.Tables[n].Borders.Enable =2; //允許有邊框,默認沒有邊框(為0時無邊框,1為實線邊框,2、3為虛線邊框,以后的數字沒試過)      }    }     //給表格插入一行,n表格的序號從1開始記    publicvoidAddRow(int n)    {      objectmiss =System.Reflection.Missing.Value;      wordDoc.Content.Tables[n].Rows.Add(refmiss);    }     //給表格添加一行    publicvoidAddRow(Microsoft.Office.Interop.Word.Tabletable)    {      objectmiss =System.Reflection.Missing.Value;      table.Rows.Add(refmiss);    }     //給表格插入rows行,n為表格的序號    publicvoidAddRow(int n, int rows)    {      objectmiss =System.Reflection.Missing.Value;      Microsoft.Office.Interop.Word.Tabletable = wordDoc.Content.Tables[n];      for(inti = 0; i < rows; i++)      {        table.Rows.Add(refmiss);      }    }     //給表格中單元格插入元素,table所在表格,row行號,column列號,value插入的元素    publicvoidInsertCell(Microsoft.Office.Interop.Word.Tabletable, int row, int column,string value)    {      table.Cell(row,column).Range.Text =value;    }     //給表格中單元格插入元素,n表格的序號從1開始記,row行號,column列號,value插入的元素    publicvoidInsertCell(int n, int row,int column, string value)    {      wordDoc.Content.Tables[n].Cell(row,column).Range.Text =value;    }     //給表格插入一行數據,n為表格的序號,row行號,columns列數,values插入的值    publicvoidInsertCell(int n, int row,int columns, string[] values)    {      Microsoft.Office.Interop.Word.Tabletable = wordDoc.Content.Tables[n];      for(inti = 0; i < columns; i++)      {        table.Cell(row,i + 1).Range.Text =values[i];      }    }     //插入圖片    publicvoidInsertPicture(stringbookmark, stringpicturePath, floatwidth, float hight)    {      object miss = System.Reflection.Missing.Value;      objectoStart =bookmark;      ObjectlinkToFile =false;    //圖片是否為外部鏈接      ObjectsaveWithDocument =true; //圖片是否隨文檔一起保存      objectrange =wordDoc.Bookmarks.get_Item(refoStart).Range;//圖片插入位置      wordDoc.InlineShapes.AddPicture(picturePath,ref linkToFile, ref saveWithDocument, refrange);      wordDoc.Application.ActiveDocument.InlineShapes[1].Width=width; //設置圖片寬度      wordDoc.Application.ActiveDocument.InlineShapes[1].Height=hight; //設置圖片高度    }     //插入一段文字,text為文字內容    publicvoidInsertText(stringbookmark, stringtext)    {      objectoStart =bookmark;      objectrange =wordDoc.Bookmarks.get_Item(refoStart).Range;      Paragraphwp =wordDoc.Content.Paragraphs.Add(refrange);      wp.Format.SpaceBefore= 6;      wp.Range.Text =text;      wp.Format.SpaceAfter =24;      wp.Range.InsertParagraphAfter();      wordDoc.Paragraphs.Last.Range.Text ="/n";    }     //殺掉winword.exe進程    publicvoidkillWinWordProcess()    {      System.Diagnostics.Process[]processes=System.Diagnostics.Process.GetProcessesByName("WINWORD");      foreach (System.Diagnostics.Processprocess in processes)      {        bool b = process.MainWindowTitle=="";        if (process.MainWindowTitle =="")        {          process.Kill();        }      }    }  }}

第二部分,具體生成文檔的編碼

代碼見下文:
 
1.首先需要載入模板
Report report =new Report();
report.CreateNewDocument(TemPath); //模板路徑
 
2.插入一個值
report.InsertValue("Bookmark_value","世界杯");//在書簽“Bookmark_value”處插入值
 
3.創建一個表格
Table table =report.InsertTable("Bookmark_table", 2, 3, 0); //在書簽“Bookmark_table”處插入2行3列行寬最大的表
 
4.合并單元格
report.MergeCell(table, 1, 1, 1, 3); //表名,開始行號,開始列號,結束行號,結束列號
 
5.表格添加一行
report.AddRow(table); //表名
 
6.在單元格中插入值
report.InsertCell(table, 2, 1,"R2C1");//表名,行號,列號,值
 
7.設置表格中文字的對齊方式
report.SetParagraph_Table(table, -1, 0);//水平方向左對齊,垂直方向居中對齊
 
8.設置表格字體
report.SetFont_Table(table,"宋體", 9);//宋體9磅
 
9.給現有的表格添加一行
report.AddRow(1);//給模板中第一個表格添加一行
 
10.確定現有的表格是否使用邊框
report.UseBorder(1,true); //模板中第一個表格使用實線邊框
 
11.給現有的表格添加多行
report.AddRow(1, 2);//給模板中第一個表格插入2行
 
12.給現有的表格插入一行數據
string[] values={"英超", "意甲", "德甲","西甲", "法甲" };
report.InsertCell(1, 2, 5,values); //給模板中第一個表格的第二行的5列分別插入數據
 
13.插入圖片
string picturePath = @"C:/Documents and Settings/Administrator/桌面/1.jpg";
report.InsertPicture("Bookmark_picture",picturePath, 150, 150); //書簽位置,圖片路徑,圖片寬度,圖片高度
 
14.插入一段文字
string text = "長期從事電腦操作者,應多吃一些新鮮的蔬菜和水果,同時增加維生素A、B1、C、E的攝入。為預防角膜干燥、眼干澀、視力下降、甚至出現夜盲等,電 腦操作者應多吃富含維生素A的食物,如豆制品、魚、牛奶、核桃、青菜、大白菜、空心菜、西紅柿及新鮮水果等。";
report.InsertText("Bookmark_text",text);
 
15.最后保存文檔
report.SaveDocument(RepPath); //文檔路徑
 
第四步,運行程序生成文檔,并查看生成的文檔

希望本文所述對大家的C#程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产成人精品在线观看| 亚洲加勒比久久88色综合| 亚洲女人初尝黑人巨大| 国产精品视频最多的网站| 欧美日韩国产中文精品字幕自在自线| 亚洲女人天堂色在线7777| 国产美女久久精品香蕉69| 欧美精品xxx| 欧洲成人免费视频| 精品国产91久久久久久| 日韩中文字幕精品| 国产精品一区二区久久精品| 午夜精品三级视频福利| 国产欧美日韩视频| 久久久www成人免费精品张筱雨| 国产亚洲精品久久久久久777| 欧美在线性爱视频| 亚洲人成网站免费播放| 欧美电影在线观看完整版| 色偷偷888欧美精品久久久| 亚洲人在线视频| 亚洲欧美日韩精品久久| 法国裸体一区二区| 在线成人免费网站| 欧美激情在线观看| 久久久久久美女| 亚洲精品成a人在线观看| 亚洲精品视频播放| 欧美在线www| 日韩欧美国产视频| 亚洲欧美三级伦理| 日韩精品在线私人| 亚洲国产欧美精品| 日韩精品中文字| 欧美精品18videosex性欧美| 北条麻妃在线一区二区| 精品性高朝久久久久久久| 亚洲欧美日韩图片| 日韩免费在线播放| 国产精品视频免费在线| 亚洲欧美日韩高清| 日韩在线观看精品| 国模精品视频一区二区三区| 国产女精品视频网站免费| 精品亚洲国产成av人片传媒| 国产成人精品999| 一区二区欧美日韩视频| 日韩av观看网址| 欧洲美女7788成人免费视频| 在线播放国产精品| 亚洲精品久久久久中文字幕欢迎你| 精品国产美女在线| 孩xxxx性bbbb欧美| 国产精品久久久久999| 色偷偷噜噜噜亚洲男人| 18性欧美xxxⅹ性满足| 久久91精品国产| 亚洲成色777777在线观看影院| 欧美人交a欧美精品| 成人精品网站在线观看| 精品在线小视频| 欧美黄色成人网| 深夜精品寂寞黄网站在线观看| 久久久久久久国产精品| 国产福利视频一区| 欧美激情精品久久久久久久变态| 热久久视久久精品18亚洲精品| 色综合老司机第九色激情| 亚洲欧洲日产国码av系列天堂| 亚洲欧美激情在线视频| 日本一区二区不卡| 国模精品一区二区三区色天香| 国产69久久精品成人看| 精品久久久免费| 精品一区电影国产| 亚洲国产日韩欧美综合久久| 亚洲成人国产精品| 欧美成人精品一区二区| 一个人看的www久久| 日韩在线视频一区| 国产亚洲一级高清| 91精品综合久久久久久五月天| 亚洲人a成www在线影院| 日本精品va在线观看| 亚洲精品中文字幕女同| 午夜精品久久久久久久99热浪潮| 国产成人精品a视频一区www| 午夜精品在线观看| 日韩中文字幕精品视频| 国外色69视频在线观看| 日本免费在线精品| 青青青国产精品一区二区| 久久久亚洲网站| 国产91色在线|免| 国产91色在线|免| 欧美孕妇孕交黑巨大网站| 日韩网站在线观看| 国产精品久久久久久久app| 日本一区二区在线播放| 国产精品精品视频| 国产香蕉精品视频一区二区三区| 久久韩国免费视频| 91国产精品电影| 欧美国产一区二区三区| 欧美一级在线亚洲天堂| 精品少妇v888av| 成人精品视频99在线观看免费| 亚洲色图偷窥自拍| 久久久在线免费观看| 中文日韩在线视频| 九九久久久久99精品| 亚洲欧美日韩图片| 亚州av一区二区| 国产精品久久久久久久久久久不卡| 国产精品免费一区二区三区都可以| 自拍偷拍亚洲区| 亚洲天堂久久av| 97视频在线观看免费高清完整版在线观看| 国产偷亚洲偷欧美偷精品| 成人精品视频久久久久| 亚洲一区亚洲二区| 亚洲аv电影天堂网| 欧洲成人在线视频| 国产一区二区欧美日韩| 精品偷拍一区二区三区在线看| 亚洲护士老师的毛茸茸最新章节| 丝袜亚洲欧美日韩综合| 成人中文字幕在线观看| 日韩免费视频在线观看| 日韩精品免费在线播放| 国产精品专区h在线观看| 国产欧美精品一区二区三区-老狼| 国产精品电影观看| 热99精品只有里视频精品| 1769国产精品| 日韩高清电影免费观看完整版| 欧美夜福利tv在线| 亚洲美女激情视频| 九九视频直播综合网| 中文字幕日韩综合av| 欧美激情一级精品国产| 国产偷国产偷亚洲清高网站| 欧美丝袜美女中出在线| 欧美日韩国产成人在线| 97久久精品在线| 国产精品视频一区国模私拍| 欧美日韩视频免费播放| 国产激情久久久| 国产丝袜一区二区三区| 日韩中文字幕免费看| 成人激情电影一区二区| 亚洲午夜色婷婷在线| 黑人巨大精品欧美一区二区一视频| 成人淫片在线看| 美女av一区二区| 在线播放国产一区中文字幕剧情欧美| 在线看片第一页欧美| 中国日韩欧美久久久久久久久| 亚洲欧洲日产国码av系列天堂| 欧美床上激情在线观看| 日韩av在线播放资源| 亚洲日韩第一页| 欧美成人小视频| 国产成人精品免费视频|