1. 一个控制台例子,实现动态生成Word。

首先,添加引用:COM->Microsoft Word 11.0 Object Library。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using Microsoft.Office.Interop.Word;
  
namespace TestWord
{
    class Program
    {
        static void Main(string[] args)
        {
            string message = CreateWordFile();
            Console.WriteLine(message);
            Console.ReadLine();
        }
  
  
        /// <summary>
        /// 创建Word文件
        /// </summary>
        /// <returns></returns>
         public static string CreateWordFile()
        {
            string message = "";
            try
            {
                Object Nothing = System.Reflection.Missing.Value;
                string name = DateTime.Now.ToString("yyyyMMddhhmmss") + ".doc";
                object filename = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, name);  //文件保存路径
                //创建Word文档
                Application WordApp = new ApplicationClass();
                Document WordDoc = WordApp.Documents.Add(ref Nothing, ref Nothing, ref Nothing, ref Nothing);
                  
                //添加页眉
                WordApp.ActiveWindow.View.Type = WdViewType.wdOutlineView;
                WordApp.ActiveWindow.View.SeekView = WdSeekView.wdSeekPrimaryHeader;
                WordApp.ActiveWindow.ActivePane.Selection.InsertAfter("[页眉内容]");
                WordApp.Selection.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphRight;//设置右对齐
                WordApp.ActiveWindow.View.SeekView = WdSeekView.wdSeekMainDocument;//跳出页眉设置
  
                WordApp.Selection.ParagraphFormat.LineSpacing = 15f;//设置文档的行间距
  
                //移动焦点并换行
                object count = 14;
                object WdLine = WdUnits.wdLine;//换一行;
                WordApp.Selection.MoveDown(ref WdLine, ref count, ref Nothing);//移动焦点
                WordApp.Selection.TypeParagraph();//插入段落
  
                //文档中创建表格
                Table newTable = WordDoc.Tables.Add(WordApp.Selection.Range, 12, 3, ref Nothing, ref Nothing);
                //设置表格样式
                newTable.Borders.OutsideLineStyle = WdLineStyle.wdLineStyleThickThinLargeGap;
                newTable.Borders.InsideLineStyle = WdLineStyle.wdLineStyleSingle;
                newTable.Columns[1].Width = 100f;
                newTable.Columns[2].Width = 220f;
                newTable.Columns[3].Width = 105f;
  
                //填充表格内容
                newTable.Cell(1, 1).Range.Text = "产品详细信息表";
                newTable.Cell(1, 1).Range.Bold = 2;//设置单元格中字体为粗体
                //合并单元格
                newTable.Cell(1, 1).Merge(newTable.Cell(1, 3));
                WordApp.Selection.Cells.VerticalAlignment = WdCellVerticalAlignment.wdCellAlignVerticalCenter;//垂直居中
                WordApp.Selection.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;//水平居中
  
                //填充表格内容
                newTable.Cell(2, 1).Range.Text = "产品基本信息";
                newTable.Cell(2, 1).Range.Font.Color = WdColor.wdColorDarkBlue;//设置单元格内字体颜色
                //合并单元格
                newTable.Cell(2, 1).Merge(newTable.Cell(2, 3));
                WordApp.Selection.Cells.VerticalAlignment = WdCellVerticalAlignment.wdCellAlignVerticalCenter;
  
                //填充表格内容
                newTable.Cell(3, 1).Range.Text = "品牌名称:";
                newTable.Cell(3, 2).Range.Text = "HTC";
                //纵向合并单元格
                newTable.Cell(3, 3).Select();//选中一行
                object moveUnit = WdUnits.wdLine;
                object moveCount = 5;
                object moveExtend = WdMovementType.wdExtend;
                WordApp.Selection.MoveDown(ref moveUnit, ref moveCount, ref moveExtend);
                WordApp.Selection.Cells.Merge();
                //插入图片
                string FileName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "test.gif");//图片所在路径
                object LinkToFile = false;
                object SaveWithDocument = true;
                object Anchor = WordDoc.Application.Selection.Range;
                WordDoc.Application.ActiveDocument.InlineShapes.AddPicture(FileName, ref LinkToFile, ref SaveWithDocument, ref Anchor);
                WordDoc.Application.ActiveDocument.InlineShapes[1].Width = 100f;//图片宽度
                WordDoc.Application.ActiveDocument.InlineShapes[1].Height = 100f;//图片高度
                //将图片设置为四周环绕型
                Shape s = WordDoc.Application.ActiveDocument.InlineShapes[1].ConvertToShape();
                s.WrapFormat.Type = WdWrapType.wdWrapSquare;
  
                newTable.Cell(12, 1).Range.Text = "产品特殊属性";
                newTable.Cell(12, 1).Merge(newTable.Cell(12, 3));
                //在表格中增加行
                WordDoc.Content.Tables[1].Rows.Add(ref Nothing);
  
                WordDoc.Paragraphs.Last.Range.Text = "文档创建时间:" + DateTime.Now.ToString();//“落款”
                WordDoc.Paragraphs.Last.Alignment = WdParagraphAlignment.wdAlignParagraphRight;
  
                //文件保存
                WordDoc.SaveAs(ref filename, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing);
                WordDoc.Close(ref Nothing, ref Nothing, ref Nothing);
                WordApp.Quit(ref Nothing, ref Nothing, ref Nothing);
                message = name + "文档生成成功!";
            }
            catch
            {
                message = "文件导出异常!";
            }
            return message;
        }
    }
}

2. 操作Word对象汇总

创建新Word

object oMissing = System.Reflection.Missing.Value;
Word._Application oWord;
Word._Document oDoc;
oWord = new Word.Application();
oWord.Visible = true;
oDoc = oWord.Documents.Add(ref oMissing, ref oMissing,
    ref oMissing, ref oMissing);

打开文档:

view sourceprint?
object oMissing = System.Reflection.Missing.Value;
Word._Application oWord;
Word._Document oDoc;
oWord = new Word.Application();
oWord.Visible = true;
object fileName = @"E:\CCCXCXX\TestDoc.doc";
oDoc = oWord.Documents.Open(ref fileName,
ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing);

导入模板

view sourceprint?
object oMissing = System.Reflection.Missing.Value;
Word._Application oWord;
Word._Document oDoc;
oWord = new Word.Application();
oWord.Visible = true;
object fileName = @"E:\XXXCCX\Test.doc";
oDoc = oWord.Documents.Add(ref fileName, ref oMissing,
                ref oMissing, ref oMissing);

添加新表

view sourceprint?
object oMissing = System.Reflection.Missing.Value;
Word._Application oWord;
Word._Document oDoc;
oWord = new Word.Application();
oWord.Visible = true;
oDoc = oWord.Documents.Add(ref oMissing, ref oMissing,
    ref oMissing, ref oMissing);
 
object start = 0;
object end = 0;
Word.Range tableLocation = oDoc.Range(ref start, ref end);
oDoc.Tables.Add(tableLocation, 3, 4, ref oMissing, ref oMissing);

表插入行

view sourceprint?
object oMissing = System.Reflection.Missing.Value;
Word._Application oWord;
Word._Document oDoc;
oWord = new Word.Application();
oWord.Visible = true;
oDoc = oWord.Documents.Add(ref oMissing, ref oMissing,
    ref oMissing, ref oMissing);
 
object start = 0;
object end = 0;
Word.Range tableLocation = oDoc.Range(ref start, ref end);
oDoc.Tables.Add(tableLocation, 3, 4, ref oMissing, ref oMissing);
 
Word.Table newTable = oDoc.Tables[1];
object beforeRow = newTable.Rows[1];
newTable.Rows.Add(ref beforeRow);

单元格合并

view sourceprint?
object oMissing = System.Reflection.Missing.Value;
Word._Application oWord;
Word._Document oDoc;
oWord = new Word.Application();
oWord.Visible = true;
oDoc = oWord.Documents.Add(ref oMissing, ref oMissing,
    ref oMissing, ref oMissing);
 
object start = 0;
object end = 0;
Word.Range tableLocation = oDoc.Range(ref start, ref end);
oDoc.Tables.Add(tableLocation, 3, 4, ref oMissing, ref oMissing);
 
Word.Table newTable = oDoc.Tables[1];
object beforeRow = newTable.Rows[1];
newTable.Rows.Add(ref beforeRow);
 
Word.Cell cell = newTable.Cell(1, 1);
cell.Merge(newTable.Cell(1, 2));

单元格分离

view sourceprint?
object oMissing = System.Reflection.Missing.Value;
Word._Application oWord;
Word._Document oDoc;
oWord = new Word.Application();
oWord.Visible = true;
oDoc = oWord.Documents.Add(ref oMissing, ref oMissing,
    ref oMissing, ref oMissing);
 
object start = 0;
object end = 0;
Word.Range tableLocation = oDoc.Range(ref start, ref end);
oDoc.Tables.Add(tableLocation, 3, 4, ref oMissing, ref oMissing);
 
Word.Table newTable = oDoc.Tables[1];
object beforeRow = newTable.Rows[1];
newTable.Rows.Add(ref beforeRow);
 
Word.Cell cell = newTable.Cell(1, 1);
cell.Merge(newTable.Cell(1, 2));
 
object Rownum = 2;
object Columnnum = 2;
cell.Split(ref Rownum, ref  Columnnum);

通过段落控制插入

view sourceprint?
object oMissing = System.Reflection.Missing.Value;
object oEndOfDoc = "\\endofdoc"
//Start Word and create a new document.
Word._Application oWord;
Word._Document oDoc;
oWord = new Word.Application();
oWord.Visible = true;
oDoc = oWord.Documents.Add(ref oMissing, ref oMissing,
    ref oMissing, ref oMissing);
 
//Insert a paragraph at the beginning of the document.
Word.Paragraph oPara1;
oPara1 = oDoc.Content.Paragraphs.Add(ref oMissing);
oPara1.Range.Text = "Heading 1";
oPara1.Range.Font.Bold = 1;
oPara1.Format.SpaceAfter = 24;    //24 pt spacing after paragraph.

oPara1.Range.InsertParagraphAfter();

转自:

http://www.soaspx.com/dotnet/csharp/csharp_20110707_7822.html

转载于:https://www.cnblogs.com/mrchenzh/archive/2012/04/09/2438641.html

C#实现动态生成Word相关推荐

  1. Freemarker - 根据模板动态生成word文档

    文章目录 Freemarker 根据模板动态生成word文档 Freemarker 介绍: Freemarker 使用: freemarker加载模板目录的方法 参考资料 Freemarker 根据模 ...

  2. Springboot中使用freemarker动态生成word文档

    文章目录 freemarker模板动态生成word文档 前言 准备 简单模板准备 <一> `word 2003` 新建`.doc` 模板 <二> 另存为`.xml` 文件,格式 ...

  3. 【.NET】用Aspose.Words for .NET动态生成word文档中的数据表格

    1.概述 最近项目中有一个这样的需求:导出word 文档,要求这个文档的格式不是固定的,用户可以随便的调整,导出内容中的数据表格列是动态的,例如要求导出姓名和性别,你就要导出这两列的数据,而且这个文档 ...

  4. java自动生成word,java动态生成word解决方案

    java动态生成word 我想弄一个java网站上的可以生成word,上网搜索了几天,找到几个可以java令jsp(html)转换成word的有jacob和poi, 还有JS,还有在jsp上添加头文件 ...

  5. Java读取word模板,并动态生成word

    Java读取word模板,并动态生成word ​ 最近有个需求是将数据库里存入的用户个人信息生成一个word然后供用户下载,第一时间就就想到了poi来做,所以记录一下免得自己忘了,忘了也可以回来看看

  6. Java动态生成word文档(图文并茂)

    很多情况下,软件开发者需要从数据库读取数据,然后将数据动态填充到手工预先准备好的Word模板文档里,这对于大批量生成拥有相同格式排版的正式文件非常有用,这个功能应用PageOffice的基本动态填充功 ...

  7. Java中利用freemarker模板动态生成word含表格

    最近公司有导出word的需求,由于word的样式有的很复杂所以记录一下Java中利用freemarker模板动态生成word含表格,以防以后忘记. 1.word表格的模板 删掉无用的数据留下基础的样式 ...

  8. freemarker动态生成word、pdf文档(写入图片)

    需求:给出固定的word模板通过后台查询出的数据动态生成word文档 结果展示:列表中的数据就是动态生成的. 一.创建.ftl模板文件,(我这里就不详细展开了,直接粘贴ftl模板的代码) <!D ...

  9. SpringBoot+Poi-tl根据Word模板动态生成word(含动态行表格、合并单元格)

    本编文章继SpringBoot+Poi-tl根据Word模板动态生成word(含动态行表格)文章之后 介绍Poi-tl导出word的延伸功能: 所需依赖以及word模板所属位置 见 SpringBoo ...

最新文章

  1. Redis生产环境架构选型方案对比
  2. 二叉树原理和作用,总结
  3. 前端学习笔记day01 html 标签之音频 embed+audio+video
  4. java线程的内存模型_java多线程内存模型
  5. SAP SMW0 上传EXCEL模板遇到的问题
  6. wireshark 如何修改抓包时间日期显示格式?
  7. 管理学习(2)——职场中最重要的四件事
  8. python获取字典长度_Python基础-字典
  9. LiDAR点云数据处理(TLS/MLS/ALS)
  10. 多模态大咖齐刷刷翻开小红书,明晚7点不见不散
  11. pro android学习笔记,【转】Pro Android学习笔记(一):Android 平台 2013.6.4
  12. html文件转成base64字符串,js 转base64字符串为文件
  13. java对excel加密_java 加密 excel
  14. 最大流算法 - 标号法
  15. 银河奇异果/云视听企鹅/CIBN/芒果TV哪个好?四款电视视频软件对比评测
  16. 自定义elementUI select下拉框样式
  17. 图像质量评价之衡量标准
  18. windows xp系统重装之u盘装系统,u盘安装xp系统
  19. [Dubbox异常] Unable to locate Spring NamespaceHandler for XML schema namespace [http://dubbo.apache[
  20. 妈妈计算机英语怎么说,妈妈英语怎么说

热门文章

  1. 启动服务 stisvc 以运行服务器,系统日志:事件类型: 警告 事件来源: b57w2k 怎么回事?...
  2. 计算机系本科毕业论文评阅评语,毕业论文评阅教师评语
  3. .Net Core添加分布式Session
  4. Luogu 2827 [NOIP2016] 蚯蚓
  5. 数据特征分析(学习笔记)
  6. 利用socketserver实现异步多线程服务端简单聊天功能
  7. linux入门教程(七) linux系统用户以及用户组管理
  8. mysql数据库一些可能会用到的命令
  9. UA PHYS515A 电磁理论V 电磁波与辐射9 简单辐射系统
  10. UA MATH574M 统计学习II 高维数据的二元分类