处理思路:

1.打开excel 用NPOI进行读取;

2.读取第一个Sheet;

读取过程中:

a.先设置相应列 不隐藏

b.读取Cell时 先判断是否的包含公式

相应代码如下:

public static DataTable ReadDataFromExcelByNPOI()
{
DataTable dt = new DataTable(); var filePathAndName = Path.Combine(Server.MapPath("~/Content/Excel"), "ExcelForUploadTest.xls");
//打开文件读取数据
stream = System.IO.File.Open(filePathAndName2, FileMode.Open); //通过Stream创建Workbook
HSSFWorkbook workbook = new HSSFWorkbook(stream); //获取excel的第一个sheet
HSSFSheet sheet = (HSSFSheet)workbook.GetSheetAt(); //设置隐藏列 为 不隐藏
for (int iHide = ; iHide <= ; iHide++) {
sheet.SetColumnHidden(iHide, false);
} //最后一列的标号(即总的行数)
int rowCount = sheet.LastRowNum; //获取sheet的首行
HSSFRow headerRow = (HSSFRow)sheet.GetRow();
//一行最后一个方格的编号(即总的列数)
int cellCount = headerRow.LastCellNum; string columnNames = @"A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,
AA,AB,AC,AD,AE,AF,AG,AH,AI,AJ,AK,AL,AM,AN,AO,AP,AQ,AR,AS,AT,AU,AV,AW,AX,AY,AZ";
string[] columns = columnNames.Split(','); //使用 A B C D ... 字母的方式 命名DataTable的各列名
for (int i = headerRow.FirstCellNum; i < cellCount; i++)
{
//DataColumn column = new DataColumn(headerRow.GetCell(i).StringCellValue);
DataColumn column = new DataColumn(columns[i]);
dt.Columns.Add(column);
} for (int i = (iHeaderRowIndex.Value + ); i <= rowCount; i++)
{
HSSFRow row = (HSSFRow)sheet.GetRow(i);
DataRow dataRow = dt.NewRow();
if (row != null)
{
for (int j = row.FirstCellNum; j < cellCount; j++)
{
if (row.GetCell(j) != null)
{
//如果是公式Cell
//则仅读取其Cell单元格的显示值 而不是读取公式
if (row.GetCell(j).CellType == CellType.FORMULA)
{
dataRow[j] = row.GetCell(j).StringCellValue;
}else{
dataRow[j] = row.GetCell(j).ToString();
}
}
}
} //某标示列 33
//某标示列 38
//其值非空 标示是有效数据
//其值为空 标示结束
if(string.IsNullOrEmpty(dataRow[].ToString())
&& string.IsNullOrEmpty(dataRow[].ToString())
)
{
break;//读取结束 退出For循环
}
else
{
dt.Rows.Add(dataRow);
} } workbook = null;
sheet = null; return dt;
} #endregion

NPOI 读取excel到DataTable 读取隐藏列 读取公式列的更多相关文章

  1. Python 用load_workbook 读取excel某个单元格数据、读取excel行数、列数

    from openpyxl import load_workbook path = r'D:\pywork\12' # EXCEL信息所在文件夹 e= load_workbook(path + '/' ...

  2. 使用NPOI读取Excel到DataTable

    一.NPOI介绍: 使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 WORD/EXCEL 文档进行读写.NPOI是构建在POI 3.x版本之上的,它可以在没有安装Office ...

  3. .net读取Excel转datatable、.net读取的Excel存在合并单元格并且转成datatable

    项目中经常会遇到Excel导入数据,Excel的模板会可能是存在合并单元格的,模板如下图所示 读取时需要填充合并单元格的值,转成datatable单元格值时,填充合并单元格的值,如下图所示: 合并单元 ...

  4. C#读取Excel,DataTable取值为空的解决办法

    连接字符串这么些就行了 string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + opnFileName ...

  5. C# 读取Excel到DataTable两种方式对比

    方式一 OLEDB读取 数据库引擎 优点:读取速度快,依据sheet排序读取 缺点:对于Excel版本依赖强,无法读取指定sheet 错误提示:本地计算机未指定 Microsoft.ACE.OLEDB ...

  6. NPOI导入excel为datatable (xls xlsx xlsm)

    使用NPOI导入导出Excel(xls/xlsx)数据到DataTable中 http://www.cnblogs.com/songrun/p/3547738.html NPOI 2.0教程 – 自动 ...

  7. C#读取Excel的其中一种方式OleDb读取(100万条)--快速大量插入SQL中

    主要运用表类型 Create table BulkTestTable( Id nvarchar(), UserName nvarchar(), Pwd nvarchar() ) Go CREATE T ...

  8. C#读取Excel的数据,并且以混合模式读取,防止数据类型变更

    /// <summary> /// Read Excel to DataSet /// </summary> /// <param name="filename ...

  9. 用NPOI从Excel到DataTable

    NPOI功能强大,不用装Excel,就可以操作表格中数据----Excel.Sheet------>DataTable private IWorkbook workbook = null; pr ...

随机推荐

  1. 使用SignalR+Asp.net创建实时聊天应用程序

    一.概述: 使用 ASP.NET 那么 SignalR 2 创建一个实时聊天应用程序.将 SignalR 添加 MVC 5 应用程序中,并创建聊天视图发送并显示消息. 在Demo中,将学习Signal ...

  2. EffectiveJava——接口优于抽象类

    Java程序设计语言提供两种机制,可以用来定义允许多个实现的类型:接口和抽象方法,这两者直接醉为明显的区别在于,抽象类允许某些方法的实现,但接口不允许,一个更为重要的区别在于,为了实现由抽象类定义的类 ...

  3. php多版本管理phpenv

    曾经有试过phpbrew的童鞋应该知道有多复杂 虽然这个好久没更新了,还是可以用的-- github:phpenv/phpenv 它的原理就是处理PATH变量,将你要求的php版本的路径加到PATH的 ...

  4. 多准则决策模型-TOPSIS方法

    多准则决策–Multiple Criteria Decision Making 多准则决策–Multiple Criteria Decision Making 多准则决策是指在具有相互冲突.不可共度的 ...

  5. js实现轮播

    在我们准备动手之前先了解下几个属性  dom元素的位置的几个相关属性 dom元素宽度/高度 clientWidth/clientHeight   元素的内尺寸   content + padding ...

  6. 微信公共平台开发3 .net

    嗯,别的不说了现在开始接着上次http://www.cnblogs.com/QLJ1314/p/3838058.html  获取ACCESSTOKEN,开始吧,接下来我们就写发送文本消息吧. 首先建立 ...

  7. Mssql链接mysql数据库

    最近在做mysql数据库实时同步到mssql数据库的方案,花了一周时间,测试通过了,在实际机器上测试出现了若干问题.第一个问题就是在mssql上链接mysql的问题. 第一步,安装 Mysql ODB ...

  8. 对抗静态分析——运行时修复dex

    对抗静态分析——运行时修复dex   本文来源:i春秋社区-分享你的技术,为安全加点温度 零.写在前面   这个系列本来题目想写对抗反编译,可是想想对抗反编译的这个范围有点大,总结如下 灵魂作图   ...

  9. 实验12:Problem J: 动物爱好者

    #define null ""是用来将字符串清空的 #define none -1是用来当不存在这种动物时,返回-1. 其实这种做法有点多余,不过好理解一些. Home Web B ...

  10. mysql常见的运算符及使用

    mysql中有4类运算符,它们是: 算术运算符 比较运算符 逻辑运算符 位操作运算符 算术操作符 算术操作符是SQL中最基本的操作运算符,主要有一下几种运算符: +(加). -(减). *(乘). / ...