这两天需要读取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. Qt之QCustomPlot绘图(一)配置和第一个例子

    最近一个用Qt开发的项目需要绘制坐标曲线,我在老师的指点下使用了QCustomPlot这个插件,使用方法简单,功能还算不错. 可是在网上找了很多资料和博文都只是将官方提供的例子演示一遍,没有系统全面的 ...

  2. java获得系统当前日期

    package com.web.test; import java.text.ParseException; import java.text.SimpleDateFormat; import jav ...

  3. bzoj2071: [POI2004]JAS

    Description 在Byteotia有一个洞穴. 它包含n 个洞室和一些隧道连接他们. 每个洞室之间只有一条唯一的路径连接他们. Hansel 在其中一个洞室藏了宝藏, 但是它不会说出它在哪. ...

  4. codeforces 232D Fence

    John Doe has a crooked fence, consisting of n rectangular planks, lined up from the left to the righ ...

  5. nil、Nil、NULL与NSNull的区别--备用

    我们来分别介绍一下这四种类型: 一.nil 我们给对象赋值时一般会使用object = nil,表示我想把这个对象释放掉: 或者对象由于某种原因,经过多次release,于是对象引用计数器为0了,系统 ...

  6. JSP前端总结

    一.C标签    一] <c:out value="..." default="..." escapeXml="true">   ...

  7. 【转】Android开发学习笔记:EditText的属性介绍

    原文网址:http://liangruijun.blog.51cto.com/3061169/627350 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追 ...

  8. 2015第30周三Spring常用工具类

    文件资源操作 文件资源的操作是应用程序中常见的功能,如当上传一个文件后将其保存在特定目录下,从指定地址加载一个配置文件等等.我们一般使用 JDK 的 I/O 处理类完成这些操作,但对于一般的应用程序来 ...

  9. remastersys

  10. selenium webdriver python 元素定位

    总结   定位查找时,返回查找到的第一个match的元素.如果找不到,则 raise NoSuchElementException   单个元素定位: find_element_by_idfind_e ...