这两天需要读取Excel文件,网上找了找,发现NPOI用的是最多的,于是研究了一下。这里大概介绍一下。

首先,在NPOI中一个Excel文件对应了一个IWorkbook对象,Excel中的一个工作表对应了NPOI中的一个ISheet。

在Excel中有行的概念IRow,但是没有列,取而代之的是单元格ICell。

下面简单介绍一下NPOI读取写入Excel的方法,我这里用的是NPOI2.0版本的

http://pan.baidu.com/s/1qXJsWXm 这是下载地址。

也可以来这里http://npoi.codeplex.com/看NPOI的官方文档。如果有用Java的同学,可以用poi来操作方法都是一样的。

自offic2003之后,excel多了一种格式即xlsx格式,所以在引用NPOI时,需要把那几个dll全部引用,如果只引用ICSharpCode.SharpZipLib.dll和NPOI.dll 则只能读取xls格式的excel。

首先看一下如何向Excel 中写入:

 //HSSF可以读取xls格式的Excel文件
IWorkbook workbook = new HSSFWorkbook();
//XSSF可以读取xlsx格式的Excel文件
//IWorkbook workbook = new XSSFWorkbook(); //Excel文件至少要有一个工作表sheet
ISheet sheet = workbook.CreateSheet("工作表");
//创建行
for (int i = ; i < ; i++)
{
IRow row = sheet.CreateRow(i); //i表示了创建行的索引,从0开始
//创建单元格
for (int j = ; j < ; j++)
{
ICell cell = row.CreateCell(j); //同时这个函数还有第二个重载,可以指定单元格存放数据的类型
cell.SetCellValue(i.ToString() + j.ToString());
}
} //表格制作完成后,保存
//创建一个文件流对象
using (FileStream fs = File.Open("test.xls", FileMode.OpenOrCreate))
{
workbook.Write(fs);
//最后记得关闭对象
workbook.Close();
} }

然后我们还是用这个excel文件来读取一下

 //首先根据需要读取的文件创建一个文件流对象
using (FileStream fs = File.OpenRead("test.xls"))
{
IWorkbook workbook = null;
//这里需要根据文件名格式判断一下
//HSSF只能读取xls的
//XSSF只能读取xlsx格式的
if (Path.GetExtension(fs.Name) == ".xls")
{
workbook = new HSSFWorkbook(fs);
}
else if (Path.GetExtension(fs.Name) == ".xlsx")
{
workbook = new XSSFWorkbook(fs);
}
//因为Excel表中可能不止一个工作表,这里为了演示,我们遍历所有工作表
for (int i = ; i < workbook.NumberOfSheets; i++)
{
//得到当前sheet
ISheet sheet = workbook.GetSheetAt(i);
//也可以通过GetSheet(name)得到
//遍历表中所有的行
//注意这里加1,这里得到的最后一个单元格的索引默认是从0开始的
for (int j = ; j < sheet.LastRowNum + ; j++)
{
//得到当前的行
IRow row = sheet.GetRow(j);
//遍历每行所有的单元格
//注意这里不用加1,这里得到的最后一个单元格的索引默认是从1开始的
for (int k = ; k < row.LastCellNum; k++)
{
//得到当前单元格
ICell cell = row.GetCell(k, MissingCellPolicy.CREATE_NULL_AS_BLANK);
Console.Write(cell.StringCellValue+" ");
}
Console.WriteLine();
}
}
}

这就是读取完成后控制台显示的结果,和Excel文件中一模一样。

下一篇我们介绍一下如果将Excel文件导入到数据库中或者将数据库的文件导出到Excel里。

C#操作Excel(NPOI)的更多相关文章

  1. .Net操作Excel —— NPOI

    近期的两个项目都有关于NPOI的功能,经过了一点学习,自己也摸索了一会,感觉还有点意思.现在将部分代码分享一下.一部分是C#代码,一部分是VB.Net的,懒得修改了,基本上都是从项目文件中copy出来 ...

  2. 免费高效实用的.NET操作Excel组件NPOI(.NET组件介绍之六)

    很多的软件项目几乎都包含着对文档的操作,前面已经介绍过两款操作文档的组件,现在介绍一款文档操作的组件NPOI. NPOI可以生成没有安装在您的服务器上的Microsoft Office套件的Excel ...

  3. C#通过NPOI操作Excel

    参考页面: http://www.yuanjiaocheng.net/webapi/create-crud-api-1-post.html http://www.yuanjiaocheng.net/w ...

  4. NPOI操作EXCEL(六)——矩阵类表头EXCEL模板的解析

    哈哈~~~很高兴还活着.总算加班加点的把最后一类EXCEL模板的解析做完了... 前面几篇文章介绍了博主最近项目中对于复杂excel表头的解析,写得不好,感谢园友们的支持~~~ 今天再简单讲诉一下另一 ...

  5. NPOI操作Excel辅助类

    /// <summary> /// NPOI操作excel辅助类 /// </summary> public static class NPOIHelper { #region ...

  6. NPOI操作EXCEL(一)——npoi基础

    去年项目有一个子模块需要解析上百张不一样的excel表格入库,当时用的NPOI,做了很久...也尝试想把代码分享到oschina,结果没坚持两篇就放弃了. 赶巧的是,昨天运营那边提出要录入一些基础数据 ...

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

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

  8. NPOI操作excel之写入数据到excel表

    在上一篇<NPOI操作excel之读取excel数据>我们把excel数据写入了datatable中,本篇就讲如何把datatable数据写入excel中. using System; u ...

  9. C#开发中使用Npoi操作excel实例代码

    C#开发中使用Npoi操作excel实例代码 出处:西西整理 作者:西西 日期:2012/11/16 9:35:50 [大 中 小] 评论: 0 | 我要发表看法 Npoi 是什么? 1.整个Exce ...

  10. [Solution] NPOI操作Excel

    NPOI 是 POI 项目的 .NET 版本.POI是一个开源的Java读写Excel.WORD等微软OLE2组件文档的项目.使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 ...

随机推荐

  1. 用jquery修改默认的单选框radio或者复选框checkbox选择框样式

    默认的radio和checkbox选框很难看.我去看了一下qq注册的页面.发现单选和复选框并没有用<input>,居然是用是A标签.然后用css背景图片展示选择框,用JavaScript控 ...

  2. phpcms首页商机的调用,多种方式

    <hr /> {pc:get sql="select * from phpcms_yp_buy" order="updatetime DESC"} ...

  3. 较详细的sqlserver数据库备份、恢复(转)

    C#实现SQL数据库备份与恢复 有两种方法,都是保存为.bak文件.一种是直接用Sql语句执行,另一种是通过引用SQL Server的SQLDMO组件来实现: .通过执行Sql语句来实现 注意,用Sq ...

  4. phpstorm 配置

    JetBrains PhpStorm 8注册码一枚 username :cf96PiPYt271u1TC License Key : 97807-12042010 00001GctOKh8f206hl ...

  5. exit() die return 的区别

    rutrun 会返回一个值,或不返回值 只是当前函数内return后面的语句将不会执行,后面的其它语句继续执行exit()可以返回值,也可以不返回值直接终止程序 函数输出一条消息,并退出当前脚本. 会 ...

  6. jquery 导航栏目

    JS 文件<script type="text/javascript"> $(document).ready(function(){ $(".level1 & ...

  7. C# ORM—Entity Framework 之Code first(代码优先)(二)

    一.Entity Framework Code first(代码优先)使用过程 1.1Entity Framework 代码优先简介 不得不提Entity Framework Code First这个 ...

  8. CSU 1160(进制问题)

    CSU 1160   Time Limit:1000MS     Memory Limit:131072KB     64bit IO Format:%lld & %llu   Descrip ...

  9. Python中函数参数传递问题

    先上两个例子: http://python.jobbole.com/85231/ a = 1 def fun(a): a = 2 fun(a) print a # 结果为1 fun(a)中的a,可以看 ...

  10. C# RGB与16进制颜色转换方法

    http://www.cnblogs.com/goldarch/archive/2010/08/16/1801053.html #region [颜色:16进制转成RGB]        /// &l ...