让 .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 方式配置(推荐,对代码无侵入性)

1. 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; }
}

2. 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

想要更多自定义选项,参考示例项目,或者给我提 issue

Contact

如果使用过程中有遇到什么问题,欢迎与我联系。

Contact me: weihanli@oulook.com

让 .Net 更方便的导入导出 Excel相关推荐

  1. 让 .Net 更方便的导入导出Excel

    Intro 因为前一段时间需要处理一些 excel 数据,主要是导入/导出操作,将 Excel 数据转化为对象再用程序进行处理和分析,没有找到比较满意的库,于是就自己造了一个轮子,屏蔽掉了 xlsx ...

  2. java导入导出excel文件

    前言:该文章使用java集成poi来操作excel文件,此处只对poi相关api进行代码编写,对于poi的理论性知识,可在学习完这篇文章后,自行百度学习.建议大家跟着文章敲一遍代码. 创建一个mave ...

  3. 使用EasyPoi导入导出Excel

    easypoi功能如同名字easy,主打的功能就是容易,让一个没见接触过poi的人员 就可以方便的写出Excel导出,Excel模板导出,Excel导入,Word模板导出,通过简单的注解和模板 语言( ...

  4. java io导出excel表格_Java IO 导入导出Excel表格

    1.将excel导入到内存 1. 调用工作簿Workbook的静态方法getWorkbook(),获得工作簿Workbook对象 InputStream in = new FileInputStrea ...

  5. SpringBoot使用poi或EasyExcel导入导出Excel文件

    使用poi导入导出Excel 首先引入poi依赖包 03版本的Excel和07版本的Excel所需要的依赖不同,都需要导入. 记录问题: 最初导入的poi包为3.6版本.WorkBook类和Sheet ...

  6. npoi的mvc怎么ajax导出,asp.net mvc利用NPOI导入导出Excel解决方法

    asp.net mvc利用NPOI导入导出Excel 导出Excel 2003没有问题,导出Excel2007老是出现无法访问已关闭的流,请帮忙解决,或是哪位有mvc导入导出excel的工具类能提供, ...

  7. java excel data 导入数据_java实现导入导出excel数据

    项目需要,要实现一个导入导出excel的功能,于是,任务驱动着我学习到了POI和JXL这2个java操作Excel的插件. 一.POI和JXL介绍 1.POI:是对所有office资源进行读写的一套工 ...

  8. 【转】 (C#)利用Aspose.Cells组件导入导出excel文件

    Aspose.Cells组件可以不依赖excel来导入导出excel文件: 导入: public static System.Data.DataTable ReadExcel(String strFi ...

  9. ASP.NET Core 导入导出Excel xlsx 文件

    ASP.NET Core 使用EPPlus.Core导入导出Excel xlsx 文件,EPPlus.Core支持Excel 2007/2010 xlsx文件导入导出,可以运行在Windows, Li ...

最新文章

  1. 让Windows2008R2也能进入手柄设置(游戏控制器设置)
  2. 骨骼动画实现秘密!闲鱼 Flutter 互动引擎告诉你
  3. FileOutputSteam入门
  4. linux下嵌入式编译环境搭建,ubuntu系统下嵌入式开发环境搭建(ubuntu 16.04)
  5. Openresty 学习笔记(一)opm 工具的使用
  6. linux下mongo工具,linux – 从另一台机器上使用mongodb工具(mongodump,mongorestore)
  7. 在一个windows服务下,安装多个mysql服务。
  8. Ubuntu18.04下基于YoloV4 的Keras物体识别
  9. 2022机械员-通用基础(机械员)考试题库模拟考试平台操作
  10. 锐浪报表,用脚本处理字段
  11. 如何解决SQL2008r2 登录不上的问题
  12. mysql事务锁死解决
  13. Element 根据勾选导出Excel表格数据
  14. 分享靠写代码赚钱的一些门路
  15. iOS OC mvvm开发模式
  16. 利用ZigBee和线程快速构建网格连接的照明应用
  17. 1056: 约瑟夫问题【n人围成一圈,报数为3的人退出圈子,问最后留下的人原来的编号。】
  18. 智能电视刷鸿蒙系统刷机教程,智能电视ROM制作教程 手把手教你做刷机包
  19. 用scrapy爬斗鱼颜值版块的图片
  20. 上网速度太慢?这样设置可以提升60%的上网速度!

热门文章

  1. Unexpected end of JSON input while parsing near错误解决方式(网上的方法)
  2. PHP个人博客项目------切切歆语博客
  3. 【深入JAVA】java注解
  4. 带有帐号密码验证的apche服务器文件下载
  5. centos 7 安装openstack kilo in three node
  6. Dell poweredge r210进BIOS修改磁盘控制器(SATA Controller)接口模式
  7. 让未备案的网站先飙起来
  8. Excel分列功能的妙用
  9. BeetleX实现MessagePack和Protobuf消息控制器调用websocket服务详解
  10. .NET遗留应用改造——性能优化篇