本文以一个简单的小例子,简述利用C#语言开发word表格相关的知识,仅供学习分享使用,如有不足之处,还请指正。
在工程中引用word的动态库在项目中,点击项目名称右键-->管理NuGet程序包,打开NuGet包管理器窗口,进行搜索下载即可,如下图所示:
涉及知识点_Application: 表示word应用程序的接口,对应的实现类是Application类。_document:表示一个word文档,通过_Application对应的文档接口进行创建。Paragraph:表示一个段落,通过_document对象的相关方法进行创建。table:表示一个表格,通过_document对象的相关方法进行创建。Range:表示一个区域,可以是一个段落,也可以是一个表格,也可以是一个单元格,可以Range.select()将光标移动到当前区域。移动焦点:wordApp.Selection.MoveDown(ref wdline,ref ncount,ref oMissing);//移动焦点生成文档效果图核心代码1 using Microsoft.Office.Interop.Word; 2 System; 3 System.Collections.Generic; 4 System.Data; 5 System.IO; 6 System.linq; 7 System.Reflection; 8 System.Text; 9 System.Threading.Tasks; 10 11 namespace ETWord 12 { 13 public class WordHelper 14 { 15 static voID CreateWordfile(string filePath) 16 { 17 18 try 19 { 20 Createfile(filePath); 21 // 22 MessageFilter.Register(); 23 object wdline = WdUnits.wdline; 24 object oMissing = Missing.Value; 25 object filename = filePath; 26 object heading2 = WdBuiltinStyle.wdStyleheading2; 27 object heading3 = WdBuiltinStyle.wdStyleheading3; 28 29 _Application wordApp = new Application(); 30 wordApp.Visible = true; 31 _document wordDoc = wordApp.documents.Open(ref filename,ref oMissing,1)">ref oMissing); 32 System.Data.Datatable dtDepts = DatabaseHelper.getDept(); 33 int ii = 0 34 foreach (DaTarow dr in dtDepts.Rows) 35 { 36 string dept = dr["dept"].ToString(); 37 Paragraph oPara0 = wordDoc.Content.Paragraphs.Add( 38 oPara0.Range.Text = string.Format({0}-{1}",ii + 1,dept); 39 //oPara0.Range.Font.Bold = 1; 40 oPara0.Format.SpaceAfter = 5; 41 oPara0.Range.Select(); 42 oPara0.set_Style( heading2); 43 oPara0.Range.InsertParagraphAfter(); 44 System.Data.Datatable dtTemplate = DatabaseHelper.getTemplateByDept(dept); 45 int jj = 46 foreach (DaTarow dr1 dtTemplate.Rows) 47 { 48 string template = dr1[template 49 string user1 = dr1[user1 50 string remark = dr1[remark 51 System.Data.Datatable dtData = DatabaseHelper.getDataByDeptAndTemplate(dept,template); 52 int count = dtData.Rows.Count; 53 int row = count + 4 54 int column = 5 55 object ncount = 56 57 wordApp.Selection.MoveDown(ref wdline,1)">ref ncount,1)"> 58 wordApp.Selection.TypeParagraph(); 59 Paragraph oPara1 = wordDoc.Content.Paragraphs.Add( 60 oPara1.Range.Select(); 61 oPara1.Range.Text = {0}-{1}、{2}1,jj + 62 oPara1.Range.Font.Bold = 1; 63 oPara1.Format.SpaceAfter = 5; 64 oPara1.set_Style( heading3); 65 oPara1.Range.InsertParagraphAfter(); 66 wordApp.Selection.MoveDown( 67 68 设置表格 69 table table = wordDoc.tables.Add(wordApp.Selection.Range,row,column,1)"> 70 71 table.borders.OutsIDelinestyle = Wdlinestyle.wdlinestyleSingle; 72 table.borders.InsIDelinestyle = 73 table.Range.Font.Bold = 74 table.PreferreDWIDthType = WdPreferreDWIDthType.wdPreferreDWIDthauto; 75 table.Columns[1].WIDth = 60f; 76 table.Columns[2].WIDth = 100f; 77 table.Columns[3].WIDth = 78 table.Columns[4].WIDth = 79 table.Columns[5].WIDth = 80 列的合并 81 Cell cell = table.Cell(2); 82 cell.Merge(table.Cell()); 83 Cell cell2 = table.Cell(2,1)"> 84 cell2.Merge(table.Cell( 85 Cell cell3 = table.Cell(3,1)"> 86 cell3.Merge(table.Cell( 87 赋值 88 table.Cell(1).Range.Text = 流程名称: 89 table.Cell(使用人: 90 table.Cell(流程说明: 91 table.Cell(4,1)">节点 92 table.Cell(2).Range.Text = 节点名 93 table.Cell(3).Range.Text = 处理人员 94 table.Cell(4).Range.Text = 处理方式 95 table.Cell(5).Range.Text = 跳转信息 96 table.Cell(2).Range.Text = template; 97 table.Cell( user1; 98 table.Cell( remark; 99 int kk = 100 foreach (DaTarow dr2 dtData.Rows)101 {102 table.Cell(kk,1)">1).Range.Text = (kk - ).ToString();103 table.Cell(kk,1)">2).Range.Text = dr2[Nodename104 table.Cell(kk,1)">3).Range.Text = dr2[Doname105 table.Cell(kk,1)">4).Range.Text = dr2[DoType106 table.Cell(kk,1)">5).Range.Text = .Empty;107 kk++108 }109 table.Cell(kk - ).Range.Select();110 111 wordApp.Selection.MoveDown(ref oMissing);移动焦点112 wordApp.Selection.TypeParagraph();插入段落113 114 jj++115 }116 ii++117 }118 119 保存120 wordDoc.Save();121 wordDoc.Close(122 wordApp.Quit(123 MessageFilter.Revoke();124 125 }126 catch (Exception e)127 128 Console.Writeline(e.Message);129 Console.Writeline(e.StackTrace);130 131 132 }133 134 private voID Createfile(135 136 if (!file.Exists(filePath))137 138 using (fileStream fs = file.Create(filePath))139 140 141 142 143 144 }145 }VIEw Code关于word开发中字体大小
满足中文出版中使用字号作为字体大小的单位的需要,它允许用户同时使用“号”和 “磅”作为字体大小的单位。
磅值与字号之间的换算关系如下:
word中设置宽度时,采用磅为单位,磅与厘米之间的换算关系如下:
备注 插入多个表格时,表格容易嵌套,主要是由于往下移动的行数不对,后来通过选中表格右下角的单元格,将光标移动到表格右下角,然后再往下移动两行,即可解决表格嵌套的问题。单元格合并问题,当单元格合并时,单元格的位置也随之改变,如:水平方向第二,三两个单元格合并,则原来的第四个单元格的坐标就会变成第三个单元格。开发运行需要在电脑上安装office组件,或者也可以安装wps。
关于源码下载链接
总结以上是内存溢出为你收集整理的C# 动态生成word文档全部内容,希望文章能够帮你解决C# 动态生成word文档所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)