Aspose.word是一款非常好用的用于word操作的dll,你可以无需安装MicrosoftOffice软件就能进行工作,在学习Aspose.word导出word之前,你最好了解一下Doc的树结构图,这有利于你更好的了解掌握,可以先看一下Aspose word编程指南了解一下。

一.首先我们先来介绍一下word文档的几个核心点:Document,DocumentBuilder;

Document是一个文档的核心节点,也是根节点。它是一个的文档起始,没有它,你就别想创建一个word文档了。通过Document,我们可以获得全局的text, bookmarks和form fields或者直属于各个Section。Document里维护了一个Section的collection,也就是它的子节点。可以copy,插入或者移除。Document可以在任意时候保存成文件或者流。甚至可以直接传给浏览器。

DocumentBuilder是一个用来操作Document的很强大的类。它提供了一系列的方法,方便你插入文本、段落、列表、表格、图片和其他内容。使用它有点类似于使用java的StringBuilder。

DOM的Node能办到的事,使用DocumentBuilder也一样能办到。而且比使用dom的方式操作document的代码要少。
DocumentBuilder内部维护了一个游标Cursor,它允许你指向任何你想指向的地方。我们通过调用DocumentBuilder.MoveToXXX这个方法来指向。比方说,DocumentBuilder.MoveToDocumentStart,DocumentBuilder.MoveToField。
MoveToXXX之后,你可以通过DocumentBuilder.InsertXXX在那里插入文字,图片,书签,域或者是其他元素。比方说, DocumentBuilder.InsertField, DocumentBuilder.InsertHtml。

二.接下来我们看下使用DocumentBuilder创建表格的几个步骤:

1.开始创建,通过DocumentBuilder.StartTable。 
2.通过DocumentBuilder.InsertCell插入一个单元格。如果需要更改格式,使用DocumentBuilder.CellFormat。 
3.在Cell里通过DocumentBuilder插入文本。 
4.重复步骤2和3,插入多格内容。 
5.通过调用DocumentBuilder.EndRow来结束当前一行。如果需要,你可以通过DocumentBuilder.RowFormat来指定一行的格式。 
6.重复步骤2 - 5,插入多行内容。 
7.调用DocumentBuilder.EndTable来结束一个表格编辑。

三.接下来上案例:

1.工具类   WordHelper:对Word文档的设置和操作:

using System.Collections;
using System.Collections.Generic;
using Aspose.Words;
using System.Data;
using System.Drawing;
using Aspose.Words.Drawing;public class WordHelper  {private Document doc;private DocumentBuilder docBuilder;public void OpenWithTemplate(string fileName)           //不覆盖word里已有的Table{if (!string.IsNullOrEmpty(fileName)){doc = new Document(fileName);docBuilder = new DocumentBuilder(doc);}}public void Open()                               //覆盖word里已有的Table{doc = new Document();docBuilder = new DocumentBuilder(doc);}//public void Builder()//{//    docBuilder = new DocumentBuilder(doc);//}/// <summary>/// 保存文件/// </summary>/// <param name="fileName"></param>public void SaveAs(string fileName){doc.Save(fileName, SaveFormat.Doc);}/// <summary>/// 插入表格/// </summary>/// <param name="data"></param>/// <param name="haveBorder"></param>/// <returns></returns>public bool InsertTable(DataTable data, bool haveBorder){Aspose.Words.Tables.Table table = docBuilder.StartTable();     //开始画TableParagraphAlignment paragraphAlignmentValue = docBuilder.ParagraphFormat.Alignment;docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Center;for (int row = 0; row < data.Rows.Count; row++){docBuilder.RowFormat.Height = 25;for (int col = 0; col < data.Columns.Count; col++){docBuilder.InsertCell();docBuilder.Font.Size = 10.5;docBuilder.Font.Name = "宋体";docBuilder.CellFormat.VerticalAlignment = Aspose.Words.Tables.CellVerticalAlignment.Center;//垂直居中对齐 docBuilder.ParagraphFormat.Alignment = ParagraphAlignment.Left;//水平居中对齐 docBuilder.CellFormat.Width = 100.0;docBuilder.CellFormat.PreferredWidth = Aspose.Words.Tables.PreferredWidth.FromPoints(50);if (haveBorder == true){//设置外框样式    docBuilder.CellFormat.Borders.LineStyle = LineStyle.Single;//样式设置结束    }docBuilder.Write(data.Rows[row][col].ToString());}docBuilder.EndRow();}MergeCell();          //合并单元格docBuilder.EndTable();//TODO:插入图片InsertImage();docBuilder.ParagraphFormat.Alignment = paragraphAlignmentValue;table.Alignment = Aspose.Words.Tables.TableAlignment.Center;table.PreferredWidth = Aspose.Words.Tables.PreferredWidth.Auto;return true;}//设置书签public void SetHeade(string strBookmarkName, string text){if (doc.Range.Bookmarks[strBookmarkName] != null){Bookmark mark = doc.Range.Bookmarks[strBookmarkName];mark.Text = text;}}//插入书签public void InsertBookMark(string BookMark){docBuilder.StartBookmark(BookMark);docBuilder.EndBookmark(BookMark);}//到哪个书签public void GotoBookMark(string strBookMarkName){docBuilder.MoveToBookmark(strBookMarkName);}//清除书签public void ClearBookMark(){doc.Range.Bookmarks.Clear();}/// <summary>/// 合并单元格/// </summary>public void MergeCell(){//21行4列for (int i = 0; i < 21; i++){if (i == 0 || i == 2 || i == 6 || i == 11 || i == 15)      //单元格合并成一格{for (int j = 1; j < 4; j++){docBuilder.MoveToCell(0, i, j, 0);docBuilder.CellFormat.HorizontalMerge = Aspose.Words.Tables.CellMerge.Previous;}}else if (i == 5 || i == 10 || i == 14 || i >= 17)      //单元格合并成两格{for (int j = 2; j < 4; j++){docBuilder.MoveToCell(0, i, j, 0);docBuilder.CellFormat.HorizontalMerge = Aspose.Words.Tables.CellMerge.Previous;}}}}//插入图片public void InsertImage(){docBuilder.MoveToCell(0, 19, 1, 0);     //移动到第20行第2列插入图片InsertBookMark("BarCode");GotoBookMark("BarCode");var img = docBuilder.InsertImage(@"f:/1.jpg", RelativeHorizontalPosition.Margin, 1, RelativeVerticalPosition.Margin,1, 100, 125, WrapType.Square);img.Width = 100;img.Height = 30;img.HorizontalAlignment = HorizontalAlignment.Center;}}

2.创建word,填充内容:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Data;
using Aspose.Words;public class WordUse : MonoBehaviour
{private WordHelper wordHelper;private void Start(){wordHelper = new WordHelper();wordHelper.Open();}public void OnBtnClick(){if(wordHelper != null){DataTable data = GetDataTable();bool isOk = wordHelper.InsertTable(data, true);if(isOk){wordHelper.SaveAs(@"e:/MyWord.doc");}}}private DataTable GetDataTable(){DataTable data = new DataTable();for(int i=0;i<4;i++){DataColumn column = new DataColumn();data.Columns.Add(column);}for(int i=0;i<21;i++){DataRow row = data.NewRow();data.Rows.Add(row);}if (data.Rows.Count > 0){data.Rows[0][0] = "开头";data.Rows[1][0] = "号码";data.Rows[1][2] = "编号";data.Rows[2][0] = "情况";data.Rows[3][0] = "姓名";data.Rows[3][2] = "爱好";data.Rows[4][0] = "班级";data.Rows[4][2] = "电话";data.Rows[5][0] = "体育";data.Rows[6][0] = "数学";data.Rows[7][0] = "语文";data.Rows[7][2] = "英语";data.Rows[8][0] = "琅琊榜";data.Rows[8][2] = "仙剑";data.Rows[9][0] = "胡歌\r\n仙剑";                 //换行  data.Rows[9][2] = "Other\r\n其他";data.Rows[10][0] = "First\r\n测试";data.Rows[11][0] = "计划";data.Rows[12][0] = "NO\r\n覆合";data.Rows[12][2] = "覆盖";data.Rows[13][0] = "中线";data.Rows[14][0] = "要求";data.Rows[15][0] = "联系方式";data.Rows[16][0] = "医生\r\n医院";data.Rows[16][2] = "告辞";data.Rows[17][0] = "Address\r\n地址";data.Rows[18][0] = "Company Name\r\n公司";data.Rows[19][0] = "码农\r\n代码";data.Rows[20][0] = "Note\r\n谢谢";}return data;}}

3.效果展示:

完成.

Aspose导出word相关推荐

  1. Aspose.Words利用Word模板导出Word文档

    今天工作中遇到了导出Word文档的问题,但是在搜索Aspose.Words 导出Word文档时发现网上的方法都是有头没尾的,有的只有一小段实例,让人看着摸不着头脑. 利用Aspose.Words导出W ...

  2. java word转pdf,docx4j转pdf,docx4j导出pdf乱码,docx4j导出pdf丢失插画和图片,aspose将word转pdf 一共两种方法

    前言:一共有docx4j转pdf,aspose转pdf两种方式,不需要设置模板!!! java转pdf目前本人使用有两种方法,下面是方法代码 ps:因为本人是云桌面开发,所以只作截图,具体代码需要自己 ...

  3. php aspose.words,C#_使用aspose.word 第三方的插件实现导出word,使用aspose.word 第三方的插 - phpStudy...

    使用aspose.word 第三方的插件实现导出word 使用aspose.word 第三方的插件实现服务器端无需安装office组件导出word的功能 #region 生成的excel文件命名和确保 ...

  4. java aspose 导出word_aspose.words导出html 转word文档带图片,(无网络也可以看图)

    aspose-words-14.9.0-jdk16.jar public static void exportWordImpl(Map> ml,OutputStream out){ java.u ...

  5. Java Aspose导入导出word文档

    /*** 导出Word数据* @param query* @return* @throws Exception*/public InputStream exportBwClassWord(BwClas ...

  6. C# 导出word文档及批量导出word文档(2)

    aspose.word主要是通过把读取出来的数据放到datatable里,在datable里做相应的格式的调整,再导出到word文档里.mvc和webform最后导出的语句略有不同,在mvc的cont ...

  7. Aspose填充word数据

    本文介绍了如何使用aspose进行word文档的生成,并提供了工具类供参考.可以在word中填充数据,生成word和pdf文档. 文章目录 建立一个word模板 应用实例 引入JAR包 导入工具类 开 ...

  8. POI根据模板导出word文件,以及word转PDF,PDF转图片再插入PDF中(防止PDF被修改)

    POI操作word和PDF POI根据模板导出word文件 word转PDF PDF转图片再插入PDF中(防止PDF被修改) POI根据模板导出word文件 一.制作word模版,${xxxx}是一会 ...

  9. springboot中使用freemarker根据flt模板导出word、pdf文档

    1.导包: <!--FreeMarker --> <dependency><groupId>org.springframework.boot</groupId ...

最新文章

  1. 22条API设计的最佳实践
  2. 如果乔布斯还在,今天他65岁了
  3. 银行的双重生物识别实验,是双重麻烦还是双重安全?
  4. mysql 监听器_实例讲解Oracle监听口令及监听器安全
  5. linux vim编辑kconfig 无法wq,Linux-4.9.2内核在mini2440上的移植(三)——编译环境测试...
  6. Delphi通过IE窗口句柄获取网页接口(IWebBrowser2)
  7. 黑龙江工程学院计算机系有几个门,黑龙江工程学院本科专业设置一览表
  8. 怎么理解Condition
  9. Sudo: unable to initialize policy plugin 解决方法
  10. python_统计数组中指定范围的数据占的比例
  11. 一键去win7快捷方式小箭头
  12. 迈向太赫兹时代:解决通讯业三大痛点 BNET开创6G时代
  13. 2020年的创业趋势是什么?未来适合什么行业钱赚的多?[附十六大趋势]
  14. 给UMEditor 增加placeholder
  15. HDU4507吉哥系列故事――恨7不成妻
  16. 华为S5700开启SNMP协议+zabbix监控
  17. Solaris有那些主要版本?
  18. 大学计算机考试基础理论试题,大学计算机基础理论知识前三章测试题
  19. 资源推荐|347个Python开发经典资源推荐(42类)
  20. 递推最小二乘法RLS:推导

热门文章

  1. 计算机能手数据的计算教学设计,《数据计算》优秀教案
  2. socket局域网聊天demo
  3. 翻开播客的B面:小众乌托邦的商业想象力
  4. SuperMap GIS 10i 新一代三维GIS技术白皮书
  5. 一盆惨遭毒手的肉——记,那一次和小鲜肉的邂逅
  6. 软件测试与正确性论证,OO学期总结
  7. java中的各行换色_java生成excel文件并且隔行换色。
  8. 商场wifi覆盖方案
  9. 驻留内存 虚拟内存 共享内存
  10. 论异步编程的正确姿势:十个接口的活现在只需要一个接口就能搞定!