Aspose导出word[通俗易懂]

Aspose导出word[通俗易懂]Aspose.word是一款非常好用的用于word操作的dll,你可以无需安装MicrosoftOffice软件就能进行工作,在学习Aspose.word导出word之前,你最好了解一下Doc的树结构图,这有利于你更好的了解掌握,可以先看一下Asposeword编程指南了解一下。一.首先我们先来介绍一下word文档的几个核心点:Document,DocumentBuilder;Docum

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

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();     //开始画Table        ParagraphAlignment 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;    }}

Jetbrains全家桶1年46,售后保障稳定 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[通俗易懂]

完成.

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/226721.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 遗传算法实例解析_遗传算法例子

    遗传算法实例解析_遗传算法例子遗传算法实例及MATLAB程序解析遗传算法GeneticAlgorithms,GA)是一种基于自然选择原理和自然遗传机制的搜索(寻优)算法,它是模拟自然界中的生命进化机制,在人工系统中实现特定目标的优化。遗传算法的实质是通过群体搜索技术,根据适者生存的原则逐代进化,最终得到最优解或准最优解。它必须做以下操作∶初始群体的产生、求每一个体的适应度、根据适者生存的原则选择优良个体、被选出的优良个体两两配对,通过随机交叉其染色体的基因并随机变异某些染色体的基因生成下一代群体,按此方法使群体逐代进化,直到满足进化

    2022年9月13日
    6
  • php将字符串内的指定字符全部替换,php中如何替换字符串中的某个字符[通俗易懂]

    php将字符串内的指定字符全部替换,php中如何替换字符串中的某个字符[通俗易懂]在PHP中,可以使用strtr()函数实现字符串替换。首先我们简单了解下strtr()函数的定义及语法。语法:stringstrtr(string$str,string$from,string$to)第一个参数表示待转换的字符串。第二个参数表示字符串中与将要被转换的目的字符to相对应的源字符。第三个参数表示字符串中与将要被转换的字符from相对应的目的字符。实例:…

    2022年5月23日
    36
  • centos7安装python3.7_python软件安装步骤

    centos7安装python3.7_python软件安装步骤Centos7安装Python3.8详细教程Centos7安装Python3.8详细教程安装编译相关工具下载python安装包编译安装python创建软连接更改yum配置Centos7安装Python3.8详细教程安装编译相关工具yum-ygroupinstall”Developmenttools”yum-yinstallzlib-develbzip2-developenssl-develncurses-develsqlite-develreadline-develtk-d

    2022年9月24日
    1
  • android之Activity.startManagingCursor方法详解

    在使用数据库操作查询数据后,如果是在Activity里面处理,那么很可能就会用到startManagingCursor()方法,在这里讲一下它的作用和使用注意事项.调用这个方法,就是将获得的Cursor对象交与Activity 来管理,这样Cursor对象的生命周期便能与当前的Activity自动同步,省去了自己管理Cursor。看下文档里的注释This method allows

    2022年3月10日
    41
  • QT设置活动窗口「建议收藏」

    QT设置活动窗口「建议收藏」QT设置活动窗口遇到一个QT窗口问题记录下,已经显示的窗口被其他窗口遮挡。再调用show无法将窗口激活显示到最前面。解决方式如下:if(!isActiveWindow())//判断是否是活动窗口{activateWindow();//设置成活动窗口}这样窗口就会被激活。…

    2025年8月11日
    3
  • Windows定时关机[通俗易懂]

    Windows定时关机[通俗易懂]1.首先将鼠标已到左面的左下角(开始菜单),右击后选择“计算机管理”,出现下图2.点击“任务计划程序”,然后在右边点击“创建基本任务”,随便填写个任务名称,比如定时关机,完了点击下一步3.选择“一次”,点击下一步4.设置开始时间,点击下一步5.选择“启动程序”,点击下一步6.程序或脚本那里输入“shutdown”,添加参数那里输入“/s”7.最后点击完成

    2022年5月15日
    48

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号