Aspose导出word
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相关推荐
- Aspose.Words利用Word模板导出Word文档
今天工作中遇到了导出Word文档的问题,但是在搜索Aspose.Words 导出Word文档时发现网上的方法都是有头没尾的,有的只有一小段实例,让人看着摸不着头脑. 利用Aspose.Words导出W ...
- java word转pdf,docx4j转pdf,docx4j导出pdf乱码,docx4j导出pdf丢失插画和图片,aspose将word转pdf 一共两种方法
前言:一共有docx4j转pdf,aspose转pdf两种方式,不需要设置模板!!! java转pdf目前本人使用有两种方法,下面是方法代码 ps:因为本人是云桌面开发,所以只作截图,具体代码需要自己 ...
- php aspose.words,C#_使用aspose.word 第三方的插件实现导出word,使用aspose.word 第三方的插 - phpStudy...
使用aspose.word 第三方的插件实现导出word 使用aspose.word 第三方的插件实现服务器端无需安装office组件导出word的功能 #region 生成的excel文件命名和确保 ...
- java aspose 导出word_aspose.words导出html 转word文档带图片,(无网络也可以看图)
aspose-words-14.9.0-jdk16.jar public static void exportWordImpl(Map> ml,OutputStream out){ java.u ...
- Java Aspose导入导出word文档
/*** 导出Word数据* @param query* @return* @throws Exception*/public InputStream exportBwClassWord(BwClas ...
- C# 导出word文档及批量导出word文档(2)
aspose.word主要是通过把读取出来的数据放到datatable里,在datable里做相应的格式的调整,再导出到word文档里.mvc和webform最后导出的语句略有不同,在mvc的cont ...
- Aspose填充word数据
本文介绍了如何使用aspose进行word文档的生成,并提供了工具类供参考.可以在word中填充数据,生成word和pdf文档. 文章目录 建立一个word模板 应用实例 引入JAR包 导入工具类 开 ...
- POI根据模板导出word文件,以及word转PDF,PDF转图片再插入PDF中(防止PDF被修改)
POI操作word和PDF POI根据模板导出word文件 word转PDF PDF转图片再插入PDF中(防止PDF被修改) POI根据模板导出word文件 一.制作word模版,${xxxx}是一会 ...
- springboot中使用freemarker根据flt模板导出word、pdf文档
1.导包: <!--FreeMarker --> <dependency><groupId>org.springframework.boot</groupId ...
最新文章
- 22条API设计的最佳实践
- 如果乔布斯还在,今天他65岁了
- 银行的双重生物识别实验,是双重麻烦还是双重安全?
- mysql 监听器_实例讲解Oracle监听口令及监听器安全
- linux vim编辑kconfig 无法wq,Linux-4.9.2内核在mini2440上的移植(三)——编译环境测试...
- Delphi通过IE窗口句柄获取网页接口(IWebBrowser2)
- 黑龙江工程学院计算机系有几个门,黑龙江工程学院本科专业设置一览表
- 怎么理解Condition
- Sudo: unable to initialize policy plugin 解决方法
- python_统计数组中指定范围的数据占的比例
- 一键去win7快捷方式小箭头
- 迈向太赫兹时代:解决通讯业三大痛点 BNET开创6G时代
- 2020年的创业趋势是什么?未来适合什么行业钱赚的多?[附十六大趋势]
- 给UMEditor 增加placeholder
- HDU4507吉哥系列故事――恨7不成妻
- 华为S5700开启SNMP协议+zabbix监控
- Solaris有那些主要版本?
- 大学计算机考试基础理论试题,大学计算机基础理论知识前三章测试题
- 资源推荐|347个Python开发经典资源推荐(42类)
- 递推最小二乘法RLS:推导