让 .NET 更方便的导入导出 Excel
让 .Net 更方便的导入导出Excel
Intro
因为前一段时间需要处理一些 excel 数据,主要是导入/导出操作,将 Excel 数据转化为对象再用程序进行处理和分析,没有找到比较满意的库,于是就自己造了一个轮子,屏蔽掉了 xlsx 与 xls 的差别,屏蔽了 Npoi 操作 Excel 的细节,提供简单容易上手的 api。完整的 API 列表请查看:https://weihanli.github.io/WeihanLi.Npoi/docs/api/WeihanLi.Npoi.html
导入/导出
添加 nuget 包引用 WeihanLi.Npoi
根据 excel 文件获取一个 IWorkbook
对象,支持 *.xls/*.xlsx
IWorkbook workbook = ExcelHelper.LoadExcel("excelFilePath");
将 Excel 文件的第一个 sheet 里的内容转成 list 对象
List<TEntity> entityList = ExcelHelper.ToEntityList<TEntity>("excelFilePath");
将 Excel 文件的第一个 sheet 里的内容转成 DataTable 对象
DataTable dataTable = ExcelHelper.ToDataTable("excelFilePath");
将 list 对象导出到 Excel 字节数组
List<TEntity> entityList = ExcelHelper.ToEntityList<TEntity>("excelFilePath");
entityList.ToExcelBytes();
将 list 对象导出到 Excel 文件
List<TEntity> entityList = ExcelHelper.ToEntityList<TEntity>("excelFilePath");
entityList.ToExcelFile("excelFilePath");
自定义配置
默认的导入导出是按照属性名为导出的列名称的,如果不能满足或者想要自定义某些属性不导出或设置导出顺序,可以通过配置实现
提供了两种配置方式,一种是使用 Attribute 方式来配置,第二种是使用 FluentAPI 方式配置(推荐,对代码无侵入性)
Attributes
在要导入导出的属性上设置
ColumnAttribute
来自定义导出的列名称或排序或忽略添加
SheetAttribute
来设置导出的excel sheet名称等for example:
public class TestEntity
{
[Column("Id")]
public int PKID { get; set; } [Column("Bill Title")]
public string BillTitle { get; set; } [Column("Bill Details")]
public string BillDetails { get; set; } [Column("CreatedBy")]
public string CreatedBy { get; set; } [Column("CreatedTime")]
public DateTime CreatedTime { get; set; }
} public class TestEntity1
{
[Column("Username")]
public string Username { get; set; } [Column(IsIgnored = true)]
public string PasswordHash { get; set; } [Column("Amount")]
public decimal Amount { get; set; } = 1000M; [Column("WechatOpenId")]
public string WechatOpenId { get; set; } [Column("IsActive")]
public bool IsActive { get; set; }
}
FluentApi (Recommend)
var setting = ExcelHelper.SettingFor<TestEntity>();
// ExcelSetting
setting.HasAuthor("WeihanLi")
.HasTitle("WeihanLi.Npoi test")
.HasDescription("")
.HasSubject(""); setting.HasSheetConfiguration(0, "System Settings"); setting.HasFilter(0, 1)
.HasFreezePane(0, 1, 2, 1); setting.Property(_ => _.SettingId)
.HasColumnIndex(0); setting.Property(_ => _.SettingName)
.HasColumnTitle("SettingName")
.HasColumnIndex(1); setting.Property(_ => _.DisplayName)
.HasColumnFormatter((entity, displayName) => $"AAA_{entity.SettingName}_{displayName}")
.HasColumnTitle("DisplayName")
.HasColumnIndex(2); setting.Property(_ => _.SettingValue)
.HasColumnTitle("SettingValue")
.HasColumnIndex(3); setting.Property(_ => _.CreatedTime)
.HasColumnTitle("CreatedTime")
.HasColumnIndex(5)
.HasColumnFormatter("yyyy-MM-dd HH:mm:ss"); setting.Property(_ => _.CreatedBy)
.HasColumnIndex(4)
.HasColumnTitle("CreatedBy"); setting.Property(_ => _.UpdatedBy).Ignored();
setting.Property(_ => _.UpdatedTime).Ignored();
setting.Property(_ => _.PKID).Ignored();
More
Contact
如果使用过程中有遇到什么问题,欢迎与我联系。
Contact me: weihanli@oulook.com
让 .NET 更方便的导入导出 Excel的更多相关文章
- C#中缓存的使用 ajax请求基于restFul的WebApi(post、get、delete、put) 让 .NET 更方便的导入导出 Excel .net core api +swagger(一个简单的入门demo 使用codefirst+mysql) C# 位运算详解 c# 交错数组 c# 数组协变 C# 添加Excel表单控件(Form Controls) C#串口通信程序
C#中缓存的使用 缓存的概念及优缺点在这里就不多做介绍,主要介绍一下使用的方法. 1.在ASP.NET中页面缓存的使用方法简单,只需要在aspx页的顶部加上一句声明即可: <%@ Outp ...
- C#用Infragistics 导入导出Excel(一)
最近项目中有数据的导入导出Excel的需求,这里做简单整理. 公司用的是Infragistics的产品,付费,不需要本地安装Office. 有需要的朋友可以下载 Infragistics.2013.2 ...
- C#用Infragistics 导入导出Excel
最近项目中有数据的导入导出Excel的需求,这里做简单整理. 公司用的是Infragistics的产品,付费,不需要本地安装Office. 有需要的朋友可以下载 Infragistics.2013.2 ...
- ASP.NET Core 导入导出Excel xlsx 文件
ASP.NET Core 使用EPPlus.Core导入导出Excel xlsx 文件,EPPlus.Core支持Excel 2007/2010 xlsx文件导入导出,可以运行在Windows, Li ...
- thinkphp导入导出excel表单数据
在PHP项目经常要导入导出Excel表单. 先去下载PHPExcel类库文件,放到相应位置. 我在thinkphp框架中的位置为ThinkPHP/Library/Org/Util/ 导入 在页面上传e ...
- 导入导出Excel工具类ExcelUtil
前言 前段时间做的分布式集成平台项目中,许多模块都用到了导入导出Excel的功能,于是决定封装一个ExcelUtil类,专门用来处理Excel的导入和导出 本项目的持久化层用的是JPA(底层用hibe ...
- php中导入导出excel的原理
在php中我们要经常导入导出excel文件,方便后台管理.那么php导入和导出excel的原理到底是什么呢?excel分为两大版本excel2007(后缀.xlsx).excel2003(后缀.xls ...
- NPOI导入导出EXCEL通用类,供参考,可直接使用在WinForm项目中
以下是NPOI导入导出EXCEL通用类,是在别人的代码上进行优化的,兼容xls与xlsx文件格式,供参考,可直接使用在WinForm项目中,由于XSSFWorkbook类型的Write方法限制,Wri ...
- .NET导入导出Excel
若是开发后台系统,ASP.NET MVC中总是涉及了很多导入导出Excel的问题,有的时候处理起来比较烦 如果能使用以下代码解决,就完美了 public class ReportModel { [Ex ...
随机推荐
- Cocos2d-x 实战
跨平台商业项目实战:攻城大作战游戏创意触发点:做什么样的游戏?分析当前主流的游戏:经典游戏(俄罗斯方块).大众化的游戏(卡牌游戏.休闲游戏).重口味游戏. 游戏创意:生活当中 游戏开发流程:1.策划方 ...
- httpClient连接超时设置
注: 每个HttpClinet对象设置都不一样 这里已3.x和4.x为例说明 1)3.X版本 创建连接 HttpClient httpClient=new DefaultHttpClient(); 这 ...
- Python_sqlite3
import sqlite3 #导入模块 conn = sqlite3.connect('example.db') #连接数据库 c = conn.cursor() #创建表 c.execute('' ...
- Python_替换当前目录下文件类型
''' 将当前目录的所有扩展名为html的文件重命名为扩展名为htm的文件 方法一 ''' import os file_list=os.listdir('.') for filename in fi ...
- IBM x3850 RAID5数据恢复过程
[raid数据恢复故障描述] 需要进行数据恢复的是北京一家公司的IBM X3850服务器,服务器挂载了5块73G SAS硬盘组成raid5磁盘阵列,4号盘为热备盘(Hot-Spare),由于未知 ...
- CAS与OAuth2的区别
CAS与OAuth2的区别 一. CAS的单点登录时保障客户端的用户资源的安全 . OAuth2则是保障服务端的用户资源的安全 . 二. CAS客户端要获取的最终信息是,这个用户到底有没有权限访问我( ...
- linux 用户空间与内核空间——高端内存详解
摘要:Linux 操作系统和驱动程序运行在内核空间,应用程序运行在用户空间,两者不能简单地使用指针传递数据,因为Linux使用的虚拟内存机制,用户空间的数据可能被换出,当内核空间使用用户空间指针时,对 ...
- EXCEL解析之终极方法WorkbookFactory
Selenium做自动化测试当然不能避免和Excel打交道. 由于Excel版本的关系,文件扩展名分xls和xlsx, 以往的经验都是使用HSSFWorkbook和XSSFWorkbook来分别处理. ...
- iOS开发-程序的生命周期
为了更好的管理程序,了解程序的生命周期是很有必要的. 运行结果: 1.首次启动: 2015-05-26 17:33:28.362 Live[4858:214241] 程序开始 2015-05-26 1 ...
- 玩转zookeeper命令
zkCli 是 zookeeper 原生的与 zk服务群连接的客户端的程序. 1.如何使用zkCli,sh 连接server 与参数 2.zkCli 下的增删查改指令 与 配额 quota 1.如何使 ...