二十七、OpenXml/Excel 操作

在企业管理系统中,系统对接Office功能是非常常见的需求。

什么是OpenXml

[来自百度百科] Open XML 的标准化工作是由 Ecma International 通过其技术委员会 45 (TC45) 执行的,来自 Apple、Barclays Capital、BP、The British Library、Essilor、Intel、Microsoft、NextPage、Novell、Statoil、Toshiba 和 United States Library of Congress 的代表参与了该项工作。该标准旨在提供现有 ISO 标准所无法提供的独特好处,其中包括能够实现从现有二进制格式向基于 XML 的格式的高保真移植。

OpenXml 官方文档

https://github.com/OfficeDev/Open-XML-SDK

如何使用

在 Hoa Framework 中,基于标准的 OpenXml/ClosedXML 开发的快捷Excel操作方式,可以大大减少Excel的复杂度以及大数据导出性能过高问题。

下面分为两个章节介绍 Excel 导入导出功能。

注入 IWorkbookContext 实例

首先在 Hoa.Applicaiton.HoaApplicationModule.cs 中注入 实例,如:

builder.RegisterGeneric(typeof(WorkbookContext<>))
       .As(typeof(IWorkbookContext<>));

关于 IWorkbookContext 接口

IWorkbookContext<T>/WorkbookContext<T> 是Hoa Framework 框架独创的操作Excel上下文对象,该对象有三个方法,使用非常简单。

Excel 导出

导出基本类型

导出强类型

更加丰富页面导出

导出并下载到本地

前端Angular下载示例

Get请求

只需要通过 <a href='下载地址'>下载</a> 即可。

Post请求

更多功能

更多功能不断集成开发中,敬请期待。

特性说明

[Excel] 特性配置

配置Excel使用区域信息、样式。

  • SheetNames:配置Excel多个Sheet

  • Scale:配置每个Sheet数据比例,比如有两个Sheet,数据有1000条,则:1:3表示第一个Sheet有250条,第二个Sheet有750条。

  • OutsideBorder:配置数据外边框样式,对象数组类型,数组第一个参数为 BorderStyle 枚举,第二个参数为 颜色值字符串

  • InsideBorder:配置数据内边框样式,对象数组类型,数组第一个参数为 BorderStyle 枚举,第二个参数为 颜色值字符串

  • AdjustToContents:是否自动调整内容宽度

[ExcelCell] 特性配置

配置单元格信息、样式。

  • Name:配置列名,不配置采用属性名

  • BackgroundColor:背景颜色

  • CellType:单元格类型,有(Text:文本类型,Image:图片类型,HyperLink:链接类型)

  • Hyperlink:链接值,如果等于 @Value 则取单元格的值,只有 CellType=HyperLink有效

  • Tooltip:链接获取焦点提示,只有 CellType=HyperLink有效

  • ImageScale:图片缩放比例,只有 CellType=Image有效

  • AlignmentHorizontal:单元格数据水平对其方式

  • AlignmentVertical:单元格数据垂直对其方式

  • FontSize:字体大小

  • FontBold:是否加粗

  • FontColor:字体颜色

  • Width:单元格宽度

  • OutsideBorder:单元格外边框,对象数组类型,数组第一个参数为 BorderStyle 枚举,第二个参数为 颜色值字符串

  • InsideBorder:单元格内边框,对象数组类型,数组第一个参数为 BorderStyle 枚举,第二个参数为 颜色值字符串

  • Border:单元格四个方向边框,对象数组类型,数组第一个参数为 BorderStyle 枚举,第二个参数为 颜色值字符串,第三个参数是方向 BorderDirection枚举类型

  • SetToColumnStyle:是否将单元格样式设置给全局列

  • Format:单元格内容格式,支持OpenXml和StringFormat格式

[ExcelGroup] 特性配置

配置分组单元格信息、样式。

  • Name:配置列名,不配置采用属性名

  • BackgroundColor:背景颜色

  • CellType:单元格类型,有(Text:文本类型,Image:图片类型,HyperLink:链接类型)

  • Hyperlink:链接值,如果等于 @Value 则取单元格的值,只有 CellType=HyperLink有效

  • Tooltip:链接获取焦点提示,只有 CellType=HyperLink有效

  • ImageScale:图片缩放比例,只有 CellType=Image有效

  • AlignmentHorizontal:单元格数据水平对其方式

  • AlignmentVertical:单元格数据垂直对其方式

  • FontSize:字体大小

  • FontBold:是否加粗

  • FontColor:字体颜色

  • Height:单元格高度

  • OutsideBorder:单元格外边框,对象数组类型,数组第一个参数为 BorderStyle 枚举,第二个参数为 颜色值字符串

  • InsideBorder:单元格内边框,对象数组类型,数组第一个参数为 BorderStyle 枚举,第二个参数为 颜色值字符串

  • Border:单元格四个方向边框,对象数组类型,数组第一个参数为 BorderStyle 枚举,第二个参数为 颜色值字符串,第三个参数是方向 BorderDirection枚举类型

  • SetToColumnStyle:是否将单元格样式设置给全局列

  • Format:单元格内容格式,支持OpenXml和StringFormat格式

[ExcelHead] 特性配置

配置表头信息、样式。

  • BackgroundColor:背景颜色

  • AlignmentHorizontal:单元格数据水平对其方式

  • AlignmentVertical:单元格数据垂直对其方式

  • FontSize:字体大小

  • FontBold:是否加粗

  • FontColor:字体颜色

  • Height:单元格高度

  • OutsideBorder:单元格外边框,对象数组类型,数组第一个参数为 BorderStyle 枚举,第二个参数为 颜色值字符串

  • InsideBorder:单元格内边框,对象数组类型,数组第一个参数为 BorderStyle 枚举,第二个参数为 颜色值字符串

  • Border:单元格四个方向边框,对象数组类型,数组第一个参数为 BorderStyle 枚举,第二个参数为 颜色值字符串,第三个参数是方向 BorderDirection枚举类型

  • Format:单元格内容格式,支持OpenXml和StringFormat格式

[ExcelRow] 特性配置

  • Index:行索引,(0:不做任何行操作,> 0:特性行操作,-1/-2:奇偶行操作)

  • Name:行的名字(暂未启用该功能

  • BackgroundColor:背景颜色

  • AlignmentHorizontal:单元格数据水平对其方式

  • AlignmentVertical:单元格数据垂直对其方式

  • FontSize:字体大小

  • FontBold:是否加粗

  • FontColor:字体颜色

  • Height:单元格高度

  • OutsideBorder:单元格外边框,对象数组类型,数组第一个参数为 BorderStyle 枚举,第二个参数为 颜色值字符串

  • InsideBorder:单元格内边框,对象数组类型,数组第一个参数为 BorderStyle 枚举,第二个参数为 颜色值字符串

  • Border:单元格四个方向边框,对象数组类型,数组第一个参数为 BorderStyle 枚举,第二个参数为 颜色值字符串,第三个参数是方向 BorderDirection枚举类型

Excel 导入

最后更新于

这有帮助吗?