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[通俗易懂]

完成.

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

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