public class ExcelOperator
{
public static List<DataTable> Read(string fileName)
{
List<DataTable> tables = new List<DataTable>();
if (!File.Exists(fileName))
return tables;
var fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
IWorkbook workbook = null;
if (fileName.IndexOf(".xlsx") > )
{
// 2007版本
workbook = new XSSFWorkbook(fs);
}
else if (fileName.IndexOf(".xls") > )
{
// 2003版本
workbook = new HSSFWorkbook(fs);
} var workbooks = workbook.GetEnumerator();
while (workbooks.MoveNext())
{
ISheet sheet = workbooks.Current as ISheet;
DataTable dt = new DataTable(sheet.SheetName);
var rows = sheet.GetRowEnumerator();
while (rows.MoveNext())
{
IRow row = rows.Current as IRow;
if (row.RowNum == )
{
row.Cells.ForEach(cell =>
{
dt.Columns.Add(cell.StringCellValue);
});
}
else
{
var dr = dt.NewRow();
for (int i = ; i < row.Cells.Count; i++)
{
dr[i] = row.Cells[i].ToString();
}
dt.Rows.Add(dr);
}
} tables.Add(dt);
}
return tables;
}
}

读取整个EXCEL方法

 public static DataTable ReadExcel(string fileName, string sheetname)
{
if (!File.Exists(fileName))
return null;
var fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
IWorkbook workbook = null;
if (fileName.IndexOf(".xlsx") > )
{
// 2007版本
workbook = new XSSFWorkbook(fs);
}
else if (fileName.IndexOf(".xls") > )
{
// 2003版本
workbook = new HSSFWorkbook(fs);
}
ISheet sheet = workbook.GetSheet(sheetname);
DataTable dt = new DataTable();
var rows = sheet.GetRowEnumerator();
while (rows.MoveNext())
{
IRow row = rows.Current as IRow;
if (row.RowNum == )
{
row.Cells.ForEach(cell =>
{
dt.Columns.Add(cell.StringCellValue);
});
}
else
{
var dr = dt.NewRow();
for (int i = ; i < row.Cells.Count; i++)
{
dr[i] = row.Cells[i].ToString();
}
dt.Rows.Add(dr);
}
}
return dt;
}

读取指定SheetName的表

NPOI读取Excel文件的更多相关文章

  1. asp.net 使用NPOI读取excel文件

    asp.net 使用NPOI读取excel文件内容 NPOI下载地址:NPOI public class ExcelHelper { /// <summary> /// 读取Excel文件 ...

  2. NPOI 读取Excel文件

    private void buttonExcel_Click(object sender, EventArgs e) { FileStream fs = null; List<ISheet> ...

  3. NPOI读取excel文件导出数据, 而此时文件正在打开中抛异常怎么办

    项目中需要用到一些数值表格, 方便起见都是用excel来的. 而如果excel正打开中, 直接使用npoi制作的工具来导出数据的话, 在这一行将会异常: workbook = new XSSFWork ...

  4. C#利用NPOI操作Excel文件

    NPOI作为开源免费的组件,功能强大,可用来读写Excel(兼容xls和xlsx两种版本).Word.PPT文件.可是要让我们记住所有的操作,这便有点困难了,至此,总结一些在开发中常用的针对Excel ...

  5. 使用NPOI读取Excel表格内容并进行修改

    前言 网上使用NPOI读取Excel文件的例子现在也不少,本文就是参考网上大神们的例子进行修改以适应自己需求的. 参考博文 http://www.cnblogs.com/restran/p/38894 ...

  6. c# .Net :Excel NPOI导入导出操作教程之读取Excel文件信息及输出

    c# .Net :Excel NPOI导入导出操作教程之读取Excel文件信息及输出 using NPOI.HSSF.UserModel;using NPOI.SS.UserModel;using S ...

  7. 读取Excel文件的两种方法比较 以及用NPOI写入Excel

    1. 采用NPOI方式,只需引用NPOI.dll,但目前最高只能到2.4.0版. 缺点:只支持.xls,不支持.xlsx格式.github上的2.4.1版支持.xlsx,但总提示缺ICSharpCod ...

  8. 读取Excel文件的两种方法

    第一种方法:传统方法,采用OleDB读取EXCEL文件, 优点:写法简单,缺点:服务器必须安有此组件才能用,不推荐使用 private DataSet GetConnect_DataSet2(stri ...

  9. NPOI读取Excel,导入数据到Excel练习01

    NPOI 2.2.0.0,初级读取导入Excel 1.读取Excel,将数据绑定到dgv上 private void button1_Click(object sender, EventArgs e) ...

随机推荐

  1. hw_module_t 加载过程

    每一个HAL模块都有一个ID值,以这些ID值为参数来调用硬件抽象层提供的函数hw_get_module就可以将指定的模块加载到内存来,并且获得 一个hw_module_t接口来打开相应的设备. 函数h ...

  2. STL理论基础、容器、迭代器、算法

    一.STL基本概念 STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称.现然主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段 ...

  3. 皮肤和DLL和图片等项目文件完全整合到exe中

    C#开发的程序原生界面实在是太丑了,自己又没有美化天赋,所以只能使用皮肤控件了,网上找到了IrisSkin2,包含一个.dll文件和若干ssk后缀的皮肤文件,代码其实很简单的.但是后来发现个问题,就是 ...

  4. JavaScript实现继承的几种重要范式

    一 原型链 1. 代码示例 function SuperType() { this.superProperty = true; } SuperType.prototype.getSuperValue ...

  5. 流畅的python之序列

    python对开发者友好的根源在于:1.序列的泛型操作2.内置的元组和映身类型3.用缩进来架构的源码4.无需变量声明的强类型 序列数据共用的一套丰富的操作:迭代.切片.排序和拼接.内置序列类型:1.容 ...

  6. bae3.0第一步 添加框架支持

    1.克隆bae上应用代码: 先在本地linux机器上创建文件夹bae并进入, 再执行git clone https://git.duapp.com/appidd01iud80bg 结果会在bae文件夹 ...

  7. 如何禁用 a 标签的点击事件

    a标签是没有disable属性的 ,如果想用disable 禁用a标签的点击事件,也可以实现: 1.a标签要用disable属性,必须和pointer-events属性一起使用, html代码: &l ...

  8. 安装部署ELK系统监控Azure China的NSG和WAF Log

    ELK是一个开源的产品,其官网是:https://www.elastic.co/ ELK主要保护三个产品: Elasticsearch:是基于 JSON 的分布式搜索和分析引擎,专为实现水平扩展.高可 ...

  9. 蓝桥杯 算法训练 ALGO-156 表达式计算

    算法训练 表达式计算   时间限制:1.0s   内存限制:256.0MB 问题描述 输入一个只包含加减乖除和括号的合法表达式,求表达式的值.其中除表示整除. 输入格式 输入一行,包含一个表达式. 输 ...

  10. git学习5 ecipse集成git(转载)

    原文地址:http://blog.csdn.net/hhhccckkk/article/details/10458159 有的eclipse已经自带了GIt了,就不用安装了 1: 进行安装Git,和安 ...