ASP.NET Core 与 ASPOSE.Words for .NET
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文件生成在里面。
运行,文档已经生成成功:
其内容如下:
目前还差一个表头,所以我添加如下代码:
这里我设置表头的字体是加粗的,表格其它内容的字体是不加粗的。
表头的背景色是浅灰色的。
最后的效果如下:
ASP.NET Core 与 ASPOSE.Words for .NET的更多相关文章
- ASP.NET Core 之 Identity 入门(一)
前言 在 ASP.NET Core 中,仍然沿用了 ASP.NET里面的 Identity 组件库,负责对用户的身份进行认证,总体来说的话,没有MVC 5 里面那么复杂,因为在MVC 5里面引入了OW ...
- ASP.NET Core 中的那些认证中间件及一些重要知识点
前言 在读这篇文章之间,建议先看一下我的 ASP.NET Core 之 Identity 入门系列(一,二,三)奠定一下基础. 有关于 Authentication 的知识太广,所以本篇介绍几个在 A ...
- ASP.NET Core应用的错误处理[3]:ExceptionHandlerMiddleware中间件如何呈现“定制化错误页面”
DeveloperExceptionPageMiddleware中间件利用呈现出来的错误页面实现抛出异常和当前请求的详细信息以辅助开发人员更好地进行纠错诊断工作,而ExceptionHandlerMi ...
- ASP.NET Core MVC/WebAPi 模型绑定探索
前言 相信一直关注我的园友都知道,我写的博文都没有特别枯燥理论性的东西,主要是当每开启一门新的技术之旅时,刚开始就直接去看底层实现原理,第一会感觉索然无味,第二也不明白到底为何要这样做,所以只有当你用 ...
- ASP.NET Core应用的错误处理[2]:DeveloperExceptionPageMiddleware中间件如何呈现“开发者异常页面”
在<ASP.NET Core应用的错误处理[1]:三种呈现错误页面的方式>中,我们通过几个简单的实例演示了如何呈现一个错误页面,这些错误页面的呈现分别由三个对应的中间件来完成,接下来我们将 ...
- Asp.net Core中使用Session
前言 2017年就这么悄无声息的开始了,2017年对我来说又是特别重要的一年. 元旦放假在家写了个Asp.net Core验证码登录, 做demo的过程中遇到两个小问题,第一是在Asp.net Cor ...
- ASP.NET Core 中文文档 第四章 MVC(3.8)视图中的依赖注入
原文:Dependency injection into views 作者:Steve Smith 翻译:姚阿勇(Dr.Yao) 校对:孟帅洋(书缘) ASP.NET Core 支持在视图中使用 依赖 ...
- .NET跨平台之旅:将示例站点升级至 ASP.NET Core 1.1
微软今天在 Connect(); // 2016 上发布了 .NET Core 1.1 ,ASP.NET Core 1.1 以及 Entity Framework Core 1.1.紧跟这次发布,我们 ...
- ASP.NET Core HTTP 管道中的那些事儿
前言 马上2016年就要过去了,时间可是真快啊. 上次写完 Identity 系列之后,反响还不错,所以本来打算写一个 ASP.NET Core 中间件系列的,但是中间遇到了很多事情.首先是 NPOI ...
随机推荐
- [bzoj4472][树形DP] Salesman
题目 原地址 解说 刚看完这道题感觉还是挺乱的,可能那时候脑子不太清醒,一度觉得自己又要重拾Tarjan了.当然最后还是发觉应该用树形DP. (以下dp[u]代表以u为根的包括自己在内的子树的最大利润 ...
- 性能优化之三:将Dottrace过程加入持续集成
之前分享过一篇如何做接口性能分析的文章,但是整个分析过程有点繁琐,需要写一个控制台程序调用被测接口,再预热.启动dottrace追踪,最后才能得到我们想要的性能分析报告.如果有办法一键生成性能分析报告 ...
- 解决ASP.NET MVC返回的JsonResult 中 日期类型数据格式问题,和返回的属性名称转为“驼峰命名法”和循环引用问题
DateTime类型数据格式问题 问题 在使用ASP.NET MVC 在写项目的时候发现,返回给前端的JSON数据,日期类型是 Date(121454578784541) 的格式,需要前端来转换一下才 ...
- D. Fight with Monsters
D. Fight with Monsters time limit per test 1 second memory limit per test 256 megabytes input standa ...
- java中eclipse的安装和JDK的环境变量的配置以及记事本的使用
2020-04-09 23:26:15 学习java的第一步当然就是环境配置了,java中的配置作为小白刚刚开始肯定会有点一点晕头转向的,开没等开始入门呢!就要准备放弃了.哈哈哈哈,没关系的,都是这么 ...
- 关于C#三层架构增删改查中的“修改”问题
先来一个界面图: DAO中的方法: 这里需要获得数据的ID,进而进行操作. 之后是代码的实现: 修改的功能中需要注意的是:根据项目具体需要来判断修改的内容. 希望对您有所帮助!
- react axios 跨域访问一个或多个域名
1.react + axios 跨域访问一个域名 配置非常简单,只需要在当前的 package.json 文件里面配置: "proxy":"http://iot-demo ...
- python class类的属性应用及init初始化实践 ---勇者斗恶龙
最近在熟悉python的基础语法,刚好老师布置了个课后作业感觉挺有意思的,就记录下来了学习过程. 题目如下: 刚拿到题目就想到了init 初始化属性,还列了下思路:(ps:notepad++写的比较糙 ...
- .NET Core项目部署到Linux(Centos7)(四)VMware Workstation虚拟机Centos 7安装
目录 1.前言 2.环境和软件的准备 3.创建.NET Core API项目 4.VMware Workstation虚拟机及Centos 7安装 5.Centos 7安装.NET Core环境 6. ...
- Cacti监控服务
Cacti监控服务 案例1:部署Cacti监控平台 案例2:构建Cacti监测系统 1 案例1:部署Cacti监控平台 1.1 问题 本案例要求部署一台Cacti监控主机,并安装相关监控组件,为进一步 ...