• ASPOSE.Cells & ASPOSE.Words 操纵Excel和Word文档的 .NET Core 实例


    Aspose.Total是Aspose公司旗下的最全的一套office文档管理方案,它提供的原生API可以对Word、Excel、PDF、Powerpoint、Outlook、CAD、图片、3D、ZIP等超过100多种文件格式进行操作,还具有报表、二维码、GIS、任务等功能,可以使用C#(.NET/.NET Core/Mono/Xamarin...)、Java、Android、C++、Nodejs、PHP、Python等语言。

    下面我使用ASP.NET Core MVC 做一个从Excel文件读取列表数据,并生成一个Word文档,同时在Word里面生成同样的列表和数据的例子。

    建立项目

    使用ASP.NET Core MVC 模板建立一个Web项目:

    安装 Aspose.Cells 和 Aspose.Words

    然后通过Nuget安装Aspose.Cells 和 Aspose.Words包,分别负责Excel和Word文档的操纵:

    安装好之后,可以试用该产品。

    安装许可

    如果有授权许可的话,可以通过几种方式把它应用到该项目中,我喜欢的方式是使用文件:

    把许可文件放在项目根目录,设置属性复制到输出文件夹:Copy if newer。

    在 Program.cs里,添加以下代码,完成许可的设置:

    运行,如果能输出以下内容,说明许可安装成功了:

     读取Excel

    为了方便,我直接把要读取的Excel文件放在项目根目录下:

     其内容如下:

    打开HomeController,在Privacy方法里进行实现,也就是我点击Privacy菜单的时候,会读取该Excel文件的内容并生成一个Word文档:

    加载Excel文件

    Aspose.Cells允许你使用多种方式加载Excel文件,这里我直接使用文件路径的方式:

    可以看到,一个Excel文件就是一个Workbook。而数据呢,实际是放在不同sheet(工作簿)里面,所以还需要锁定sheet。

    Workbook里面有个属性叫Worksheets,它的类型是WorksheetCollection,是一个集合,而这个集合实现了IList<T>接口,所以可以通过索引的方式访问它的元素。

    获取第一个sheet:

    读取单元格里的数据

    现在就可以读取单元格里的数据了。

    可以使用单元格的名称,例如 A2;或者行和列的索引等方式来访问单元格。

    为了方便存储列表的数据,我建立了一个类,它的属性对应列表的列:

    然后我使用行列索引的方式来读取单元格的内容,并把内容存放到一个List里面,并传递到View:

     下面是View的代码:

     运行程序,点击Privacy:

    可以看到数据从Excel文件里成功的被读取了。

    写入Word文档 

    在Aspose里面,Word文档对应的是Document对象。

    在Document里面写内容,就需要使用DocumentBuilder:

    剩下的就是模拟我们平时操作Word的一个过程。

    首先我需要一个剧中的,字号较大的一个标题。我先设置字体,然后设置段落:

    这里字体是24号大,加粗,宋体,蓝色,没有下划线。

    然后创建了一个段落,剧中的。

    最后写了一行文字。

    创建表格

    创建表格首先需要调用DocumentBuilder.StartTable.方法,然后使用DocumentBuilder.InsertCell来插入单元格,使用 DocumentBuilder.EndRow来结束每一行,最后使用DocumentBuilder.EndTable来结束这个表格。

    整个代码就像我们手绘表格一样:

    这里,首先我需要把字体改变成表格所需的大小。

    然后开始一个格一个格的写入内容。

    最后,在把table的宽度设为自适应窗口宽度。然后结束表格即可。

    生成Word文件

    生成Word文档的方式也是多种多样的,我这里直接生成文件:

    这里面我注入了IWebHostEnvironment,用它找到项目根目录,然后把Word文件生成在里面。

    运行,文档已经生成成功:

    其内容如下:

    目前还差一个表头,所以我添加如下代码:

    这里我设置表头的字体是加粗的,表格其它内容的字体是不加粗的。

    表头的背景色是浅灰色的。

    最后的效果如下:

  • 相关阅读:
    python中不可变数据类型和可变数据类型
    你分得清Python中:“索引和切片”吗?
    Python Django中一些少用却很实用的orm查询方法
    jQuery on()方法
    jquery.flexslider-min.js实现banner轮播图效果
    jQuery 树型菜单插件(Treeview)
    jQuery Growl 插件(消息提醒)
    jQuery Autocomplete 用户快速找到并从预设值列表中选择
    jQuery Accordion 插件用于创建折叠菜单
    jquery.validate.js 验证框架详解
  • 原文地址:https://www.cnblogs.com/cgzl/p/12782197.html
Copyright © 2020-2023  润新知