[NPOI2.0] 使用NPOI读取和导出Excel文件
先来说下一直使用的 Microsoft.Office.Interop.Excel ,在系统正式使用时遇到的问题
1:Excel读取数据BUG
由于使用Microsoft.Office.Interop.Excel 出现读取数据的Bug,导致经常要为此问题浪费时间去向客户解释原因和指导客户如何处理Excel文档来适应读取的Bug问题。
2:客户环境部署
客户环境(多为工厂机器)没有安装 Mircosoft Office(600M以上)或 AccessDatabaseEngine(20M左右),部署时候需要至少5分钟进行读取Excel引擎的安装。
3:解决了 32位、64位 "未在本机上注册Mircosoft.ACE.OLEDB 1X.0" 的系统所安装Excel的版本问题
由于客户环境各不相同,有64位系统,但安装 32位的 Office 软件;亦有64位系统,安装 64位系统的 Office软件;
使用NPOI可以解决以上3个问题。
=========================
以下我列出 在NPOI中遇到的难点,
其他的代码 我会发出整个项目到百度云盘 : http://pan.baidu.com/s/1mgwxexM
一、NPOI 基本类
IWorkbook -- 一般读取什么文件就使用下列哪种类
|__ HSSFWorkbook -- 对应于 XLS
|__ XSSFWorkbook -- 对应于 XLSX
ICell -- 单元格基本使用次类,本人暂未使用下面细分的2种单元格
|__ HSSFCell -- XLS
|__ XSSFCell -- XLSX
二、NPOI对于读取 数值 或 日期
由于NPOI对读取单元格中日期(时间)和数值都使用了 CellType.Numeric,故在对日期(时间)的读取本人加上了以下的判断。
private static object GetValueType(ICell cell)
{
if (cell == null)
{
return null;
} switch (cell.CellType)
{
case CellType.Blank:
return null;
case CellType.Boolean:
return cell.BooleanCellValue;
case CellType.String:
return cell.StringCellValue;
case CellType.Error:
return cell.ErrorCellValue;
case CellType.Formula:
return cell.NumericCellValue;
//return cell.CellFormula; // 少数情况下 会直接读取公式 case CellType.Numeric: // 缺点 NPOI对日期处理比较薄弱
{
short format = cell.CellStyle.DataFormat;
if ( // TODO : 继续研究下获取日期 or 数值 !!
// 可能不同文件自定义不同
format == || // 日期 yyyy-m-d
format == || // 自定义 yyyy-m-d h:mm
format == ||
format == ||
format == ||
format == || // 自定义 yyyy年y月d日
format == // 自定义 yyyy-mm-dd hh:mm:ss
)
{ return cell.DateCellValue; }
else { return cell.NumericCellValue; }
}
default:
return "=" + cell.CellFormula;
}
}
[NPOI2.0] 使用NPOI读取和导出Excel文件的更多相关文章
- 如何使用JavaScript实现纯前端读取和导出excel文件
js-xlsx 介绍 由SheetJS出品的js-xlsx是一款非常方便的只需要纯JS即可读取和导出excel的工具库,功能强大,支持格式众多,支持xls.xlsx.ods(一种OpenOffice专 ...
- 如何使用JavaScript实现纯前端读取和导出excel文件(转)
转自小茗同学博客:https://www.cnblogs.com/liuxianan/p/js-excel.html js-xlsx 介绍 由SheetJS出品的js-xlsx是一款非常方便的只需要纯 ...
- php读取和导出Excel文件
require 'vendor/PHPExcel/PHPExcel.php';require 'vendor/PHPExcel/PHPExcel/IOFactory.php'; public func ...
- jxl导出Excel文件
一.java项目实现读取Excel文件和导出Excel文件 实现读取和导出Excel文件的代码: package servlet; import java.io.FileInputStream; im ...
- NPOI复制模板导出Excel
本人菜鸟实习生一枚,公司给我安排了一个excel导出功能.要求如下:1.导出excel文件有样式要求:2.导出excel包含一个或多个工作表:3.功能做活(我的理解就是excel样式以后可能会变方便维 ...
- 使用NPOI或EPPlus来导出Excel文件实例,可在Excel文件加密
使用NPOI.dll组件来导出Excel文件,并设置样式,Nuget引用即可. packages\NPOI.2.1.3.1\lib\net20\NPOI.dll #region Excel prote ...
- 使用NPOI导出Excel文件
使用NPOI导出Excel文件,本实例使用了ASP.NET MVC. 1.使用NPOI导出Excel文件 实例:导出商品列表. 要求:1.通过NPOI导出导出商品列表信息: 2.使用Excel函数计算 ...
- WeihanLi.Npoi 根据模板导出Excel
WeihanLi.Npoi 根据模板导出Excel Intro 原来的导出方式比较适用于比较简单的导出,每一条数据在一行,数据列虽然自定义程度比较高,如果要一条数据对应多行就做不到了,于是就想支持根据 ...
- C#,使用NPOI,导出excel文件
/// <summary> /// 导出excel文件 /// </summary> /// <param name="dt">Table表数据 ...
随机推荐
- background-size (设置背景图片的大小)
设置背景图片的大小,以长度值或百分比显示(数值包括 长度length和百分比percentage),还可以通过cover和contain来对图片进行伸缩. 语法:background-size: au ...
- SAP HANA 创建属性视图
[Step By Step]SAP HANA创建属性视图(Attribute View) Demo Instruction: 从一张用户信息表中组合出相信地址. 1. 在modeler窗口中,找到相应 ...
- 总结的OSM 地图相关的分析
How OSM works: Tile Format: png, z: levels [0- 18], x: Latitude [0- ], y: Longitude [0- ]; ...
- Java版冒泡排序和选择排序
一.理解说明 1.理解和记忆 冒泡排序:依次定位数组元素,每次只和相邻的且符合条件的元素交换位置. 选择排序:依次在数组的每个位置,通过逐个对比选择出最大或最小的元素. 2.知识点说明 (1)数组是引 ...
- HDU 5572 An Easy Physics Problem (计算几何+对称点模板)
HDU 5572 An Easy Physics Problem (计算几何) 题目链接http://acm.hdu.edu.cn/showproblem.php?pid=5572 Descripti ...
- C#使用SqlDataAdapter 实现数据的批量插入和更新
近日由于项目要求在需要实现中型数据的批量插入和更新,晚上无聊,在网上看到看到这样的一个实现方法,特摘抄过来,以便以后可能用到参考. 一.数据的插入 DateTime begin = DateTime. ...
- 基于jQuery弹性展开收缩菜单插件gooey.js
首先 引入css <link rel="stylesheet" href="css/bootstrap.min.css"> <link rel ...
- JDK及Jmeter的安装和配置
Jmeter通常用于并发测试,本文介绍Jmeter工具的安装步骤. 工具/原料 WIN7 Jmeter安装包 JDK 一.安装JDK [步骤一]安装jdk 1.下载jdk,到官网下载jdk,地址: ...
- php 常用的调试方法
file_put_contents("c:\1.log","输出字符串",FILE_APPEND);第三个参数是防止前面的内容被覆盖 error_log(pri ...
- ios 从前台返回到回台 从后台返回到前台 或者 支付宝支付订单后 对界面进行操作
正常情况下,在AppDelegate中实现下面两个方法,能够监听从后台恢复到前台 - (void)applicationDidEnterBackground:(UIApplication *)appl ...