转载地址:https://www.cnblogs.com/wuhuacong/archive/2013/02/05/2893191.html C#导出Word,Excel的方法有很多,这次因为公司的业务需求,需要导出内容丰富(文字,表格,图片)的报告,以前的方法不好使,所以寻找新的导出方法,在网上找到了通过模板文件导出Word的方法,记录一下过程. 一:模板的创建 通过模板导出,肯定需要先创建模板,然后顾名思义就是将模板中提前设置好的占位符,通过程序替换为想输出的内容即可; 新建word文件(必须为docx或者dotx文件),放在程序根目录下,在需要位置 插入-文档部件-域, 域名:MacroButton 二:添加项目 在解决方案中添加项目WordMLHelper,在原项目中添加对WordMLHelper的引用后可以直接调用. 三:调用方法 首先确定模板文件位置和导出文件的生成路径. private string mubanFile = "muban.docx"; private string outputPath = @"C:\Users\zz\Desktop\test1.docx"; 1.打开模板文件,获取所有填充域 ![]() 1 string templatePath = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory 2 , mubanFile); 3 List<TagInfo> tagInfos = wordMLHelper.GetAllTagInfo(File.OpenRead(templatePath)); 2.遍历所有填充域,替换填充域内容 锁定填充域的话,有两种方法,一是根据填充域的提示文字,如"[文字]",二是根据填充域的索引,如if(tagInfos[i].Seq==2),则是找到索引为2的填充域 ![]() 1 for (int i = 0; i < tagInfos.Count; i++) 2 { 3 //填充域有两种类型,1:段落或图片,2:表格 4 //对填充域填充时需先判断填充域类型 5 if (tagInfos[i].Tbl == null) 6 { 7 if (string.Equals(tagInfos[i].TagTips.Trim(), "[文字]")) 8 { 9 TxtInfo txtInfo = new TxtInfo(); 10 txtInfo.Content = "已经成功替换"; 11 txtInfo.ForeColor = "00ff00"; 12 //txtInfo.HightLight = HighlightColor.Blue; 13 tagInfos[i].AddContent(txtInfo); 14 } 15 if (string.Equals(tagInfos[i].TagTips.Trim(), "[图片]")) 16 { 17 ImgInfo imgInfo = new ImgInfo(); 18 imgInfo.ImgPath = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory 19 , "./image/a1.jpg"); 20 imgInfo.Width = 200; 21 imgInfo.Height = 200; 22 tagInfos[i].AddContent(imgInfo); 23 } 24 } 25 else 26 { 27 TableStructureInfo tblInfo = tagInfos[i].Tbl; 28 if (tagInfos[i].Seq==2) 29 { 30 for (int j = 0; j < 3; j++) 31 { 32 RowStructureInfo row = new RowStructureInfo(); 33 34 for (int k = 0; k < 3; k++) 35 { 36 CellStructureInfo cell = new CellStructureInfo(); 37 TxtInfo txtInfo = new TxtInfo(); 38 txtInfo.Content = "第" + (j + 1) + "行,第" + (k + 1) + "列"; 39 txtInfo.Size = 25; 40 txtInfo.ForeColor = "0000ff"; 41 cell.AddContentLine(txtInfo); 42 row.AddCell(cell); 43 } 44 tblInfo.AddRow(row); 45 } 46 } 47 48 } 49 } 3.保存文件 ![]() 四:完成 调用方法很简单,随着模板的修改,可以快速生成需要格式多样内容丰富的Word文档,感谢您的阅读与评论. 五:补充 引用WordMLHelper.dll。 接口 WordMLHelper:操作模板类 |
|