C#怎样生成固定文章格式word文档

傻瓜打蠢驴 2013-09-01 10:46:22
给出文章的标题、二级标题、正文以及表格,怎么样生成一个word文档,是否需要对word文档内部xml文件进行解析,把内容存入再输出? 这个过程是怎么样的,请求帮忙
...全文
241 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sundays 2013-09-03
  • 打赏
  • 举报
回复
先在word里写出你的想要的格式(标题、二级标题、正文以及表格),然后查看对应的宏语言,将其转为C#语言就可以了(不过内容要自己在中间输入)
全栈极简 2013-09-01
  • 打赏
  • 举报
回复
创建一个模版,在里面创建好相应的占位符,然后读取数据替换即可。 refer:http://blog.csdn.net/chinacsharper/article/details/8980456
threenewbee 2013-09-01
  • 打赏
  • 举报
回复
设定一个模板,设好各种样式的格式。用这个模板创建文档,根据你的要求,应用这些样式。这是最简单的。
qizhf3 2013-09-01
  • 打赏
  • 举报
回复
System.Type wordType = System.Type.GetTypeFromProgID("Word.Application"); //创建word对象 Object word = System.Activator.CreateInstance(wordType); wordType.InvokeMember("Visible", BindingFlags.SetProperty, null, word, new Object[] { true }); //让Word.Application可见; Object documents = wordType.InvokeMember("Documents", BindingFlags.GetProperty, null, word, null); Object document = documents.GetType().InvokeMember("Add", BindingFlags.InvokeMethod, null, documents, new Object[] { Application.StartupPath + "\\空.dot" }); //新增一个文档,用New代替Add不行 Object tables = document.GetType().InvokeMember("Tables", BindingFlags.GetProperty, null, document, null); Object selection = wordType.InvokeMember("Selection", BindingFlags.GetProperty, null, word, null); //================================================================================================= const int wdAlignParagraphCenter = 1, wdAlignParagraphJustify = 3, wdCellAlignVerticalCenter = 1; Object paragraphFormat = selection.GetType().InvokeMember("ParagraphFormat", BindingFlags.GetProperty, null, selection, null); paragraphFormat.GetType().InvokeMember("Alignment", BindingFlags.SetProperty, null, paragraphFormat, new Object[] { wdAlignParagraphCenter }); //注意这里是SetProperty Object font = selection.GetType().InvokeMember("Font", BindingFlags.GetProperty, null, selection, null); font.GetType().InvokeMember("Size", BindingFlags.SetProperty, null, font, new Object[] { 15 }); font.GetType().InvokeMember("Bold", BindingFlags.SetProperty, null, font, new Object[] { true }); selection.GetType().InvokeMember("TypeText", BindingFlags.InvokeMethod, null, selection, new Object[] { " 的C# Word报表" }); selection.GetType().InvokeMember("TypeParagraph", BindingFlags.InvokeMethod, null, selection, null); Object range = selection.GetType().InvokeMember("Range", BindingFlags.GetProperty, null, selection, null); Object[] arg = new Object[3]; arg[0] = range; arg[1] = this.dataGridView1.RowCount + 2; //表格行数 arg[2] = this.dataGridView1.ColumnCount; //表格列数 Object table = tables.GetType().InvokeMember("Add", BindingFlags.InvokeMethod, null, tables, arg); //创建新表格,最后一个参数直接用new Object[] { range, 2, 5 }也是可以的; for (int i = 0; i < dataGridView1.ColumnCount; i++) { Object cell = table.GetType().InvokeMember("Cell", BindingFlags.InvokeMethod, null, table, new Object[] { 1, i + 1 }); //访问表格第1行,第1列,注意这里不是GetProperty Object cellRange = cell.GetType().InvokeMember("Range", BindingFlags.GetProperty, null, cell, null); cellRange.GetType().InvokeMember("Bold", BindingFlags.SetProperty, null, cellRange, new Object[] { 1 }); Object row = rows.GetType().InvokeMember("Item", BindingFlags.InvokeMethod, null, rows, new Object[] { 1 }); Object rowCells = row.GetType().InvokeMember("Cells", BindingFlags.GetProperty, null, row, null); rowCells.GetType().InvokeMember("VerticalAlignment", BindingFlags.SetProperty, null, rowCells, new Object[] { wdCellAlignVerticalCenter }); cellRange.GetType().InvokeMember("InsertAfter", BindingFlags.InvokeMethod, null, cellRange, new Object[] { dataGridView1.Columns[i].Name }); }

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧