NPOI 超简单的导出导入
首先说说,第一次遇到过匿名导出的那个时候是在我在北京第一家公司,简单的声明一个对象就可以导出,那时候感觉高大上,自己也想研究研究,但是因为头将代码后来加密了根本看不到。好吧,研究了研究放弃了,后来,因为个人原因离职了。
然后进入了一个外包公司,有个功能需求是导入,导出Excel的需求,当时不想复制粘贴简单操作,也因为受到这家公司动态创建实体的代码上的理解,也不喜欢同事导出时先保存到服务器的逻辑,便用NPOI重写了一份帮助类。
因为时间太长了,更换了电脑,当时测试的Demo已经没有了,我分拆出来一个吧。
实现功能:
注:功能目前只支持单Sheet
导入:支持List和DataTable格式,支持数据非空验证。
导出:支持List和DataTable格式,支持Excel格式,支持匿名类List导出及简单样式操作。
定义Excel和实体类及DataTable的对应列实体,此实体主要是用于帮助定义导入导出时的字段对应关系。
及导入是非空验证,导出时配置简单样式等。
下图是主要类结构图:
ExcelColumn是单元格的列定义的实体类;
ExCelColumns是列的集合定义列。
ExcelStream 是防止NPOI释放操作,因为NPOI2开始至今Response到浏览器会出现错误,后来发现是因为内存释放导致的。
NPOIExelHelper 是导入导出的调用方法。




帮助类的代码不贴了,稍后传上去各位自己下载,因当时开始的考虑与后来的考虑不一致导致代码有部分重复,没有做整理,谅解。
两个导入节点配置,当然你也可以不用配置,那么导入的第一行的单元格直接对应实体类的列或DataTable的表格。
<?xml version="1.0" encoding="utf-8" ?>
<root>
<Inbound>
<!--默认读取节点-->
<row height="20" title="入库SN信息" sheetname="sheet1" ignoreerr="false">
<column key="库房所在地" name="WarehouseName" />
<column key="采购订单号" name="PurchaseNumber"></column>
<column key="批次编号" name="BatchNumber" required="true"></column>
<column key="CODE" name="Code" required="true"></column>
<column key="序列号" name="SN" required="true"></column>
<column key="Configid/Bom" name="ConfigId"></column>
<column key="产品描述" name="ProductDescription"></column>
<column key="入库数量" name="Amount"></column>
</row>
</Inbound>
<Outbound>
<row height="50" title="出库SN信息" sheetname="sheet1" ignoreerr="false">
<column key="库房所在地" name="WarehouseName" />
<column key="出库单号" name="OutBoundNumber" required="true"></column>
<column key="合同号" name="ContractNumber"></column>
<column key="CODE" name="Code" required="true"></column>
<column key="序列号" name="SN" required="true"></column>
<column key="Configid/Bom" name="ConfigId"></column>
<column key="产品描述" name="ProductDescription"></column>
<column key="出库数量" name="Amount"></column>
</row>
</Outbound>
</root>
其中ignoreerr是导入是是否忽略错误导入,一般只是否非空验证错误。
required为此列是否非空验证。
下面我们就做一个导入导出测试。因为本人不喜欢用DataTable,所以DataTable方式不做Demo。但是实体类里面支持Dt导入导出。
首先,声明实体类:

配置导入导出XML:

导入代码:

导出代码:


源码地址:下载链接
NPOI 超简单的导出导入的更多相关文章
- poi整合springboot超简单入门例子
1.导入依赖 2.application.properties只需要数据库连接信息就可以 3.目录结构 有个没用的service,请忽略 4.Controller,因为入门列子,所以简单的导出 导入读 ...
- Oracle简单常用的数据泵导出导入(expdp/impdp)命令举例(上)
<Oracle简单常用的数据泵导出导入(expdp/impdp)命令举例(上)> <Oracle简单常用的数据泵导出导入(expdp/impdp)命令举例(下)> 目的:指导项 ...
- Oracle简单常用的数据泵导出导入(expdp/impdp)命令举例(下)
<Oracle简单常用的数据泵导出导入(expdp/impdp)命令举例(上)> <Oracle简单常用的数据泵导出导入(expdp/impdp)命令举例(下)> 目的:指导项 ...
- NPOI 在指定单元格导入导出图片
NPOI 在指定单元格导入导出图片 Intro 我维护了一个 NPOI 的扩展,主要用来导入导出 Excel 数据,最近有网友提出了导入 Excel 的时候解析图片的需求,于是就有了本文的探索 导入E ...
- 有史以来功能最全,使用最简单的excel导入/导出工具
Github地址:https://github.com/xuanbg/Utility. 还有其他一些福利,请各位园友自取. 构造方法 1.用于导出Excel文件 NpoiHelper(ExcelVer ...
- php做EXCEL数据导出导入开发的一些小问题
前两天刚刚做开发CRM系统项目,在做要做EXCEL导出导入功能,因为以前做.NET开发用的是NPOI,但可是没找到PHP版本的,所以就网搜找了个国外的开源PHPEXCEL , 一开始只是做了简单的导入 ...
- ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案 try.dot.net 的正确使用姿势 .Net NPOI 根据excel模板导出excel、直接生成excel .Net NPOI 上传excel文件、提交后台获取excel里的数据
ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案 ASP.NET Core 从2.2版本开始,采用了一个新的名为Endpoint的路由方案,与原来的方案在使用上差别不 ...
- SQL SERVER几种数据迁移/导出导入的实践
SQLServer提供了多种数据导出导入的工具和方法,在此,分享我实践的经验(只涉及数据库与Excel.数据库与文本文件.数据库与数据库之间的导出导入). (一)数据库与Excel 方法1: 使用数据 ...
- BCP导出导入大容量数据实践
前言 SQL SERVER提供多种不同的数据导出导入的工具,也可以编写SQL脚本,使用存储过程,生成所需的数据文件,甚至可以生成包含SQL语句和数据的脚本文件.各有优缺点,以适用不同的需求.下面介绍大 ...
随机推荐
- Sql 将多个表查询的结果进行再次查询
把你目前查到结果集定义为一个临时表 tempTable 下面是如何查 SELECT * FROM tempTable where 关键字=‘’举例 select book_num,book_name, ...
- jquery 源码学习(二)
在网上找到一篇广为流传的文章<常用正则表达式>,逐一分析,不足地方进行补充和纠正 作者:nuysoft/JS攻城师/高云 QQ:47214707 EMail:nuysoft@gmail ...
- dp_Pku1887
<span style="color:#000099;">/* A - 单纯dp 示例 Time Limit:1000MS Memory Limit:30000KB 6 ...
- vue,js 使用中报错 TypeError: Cannot read property '__ob__' of undefined
原因: data中没有加return 切记!切记!
- c语言学习笔记(2)——预备知识
c语言预备知识 1.cpu 内存条 硬盘 显卡 主板显示器 之间的关系 硬盘里的<猛龙过江>(双击)--->内存条 cpu---->显卡,声卡--->显示器 2.he ...
- [MVVM Light]Messenger 的使用
原文:[MVVM Light]Messenger 的使用 当我们使用MVVM开发模式进行开发时,ViewModel之间的通信常常是很头疼的事情,好在MVVM Light提供了Messenger类可以轻 ...
- python中对文件、文件夹的操作
python中对文件.文件夹的操作需要涉及到os模块和shutil模块. 创建文件: 1) os.mknod("test.txt") 创建空文件 2) open(&qu ...
- ASP.NET Core 用户注册 - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core 用户注册 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 用户注册 上一章节我们终于迁移完了 Identity 的数据,也创建 ...
- (015)实现一个函数来检查是否平衡树(keep it up)
实现一个函数来检查是否平衡树.这个问题而言. 平衡指的是这棵树随意两个叶子结点到根结点的距离之差不大于1. 这个题我们能够採用暴力搜索,找到叶子节点到根节点的最小值和最大值.然后他们的差假设大于1就不 ...
- 【iOS发展-89】UIGestureRecognizer完整的旋转手势识别、缩放和拖拽等效果
(1)效果 (2)代码 http://download.csdn.net/detail/wsb200514/8261001 (3)总结 --先依据所需创建不同类型的手势识别.比方: UITapGest ...