本文讲述如何通过NPOI来读取Excel。
需要准备的dll见: http://blog.csdn.net/yysyangyangyangshan/article/details/42614181
环境.net2.0,Excel版本2003。
NPOI读取Excel比较简单,只要抓住Excel的几个主要点即可。
一般Excel通过这几部分构成的,book,sheet页,然后是sheet页里的行列。读取Excel则是先找到book,然后book内的sheet,之后就根据sheet里的第几行第几列进行读取内容即可。
下面直接看代码。
先看一个主要用来读取Excel内容的方法。看懂这个方法后可以灵活的使用代码读取Excel的内容。
以下是将Excel表格的内容读取为一个DataTable。当然在实际中不一定需要读取为DataTable,也可以读某一行,某一列,或者某个单元格单独读取。

    /// <summary>/// 读取Excel保存为datatable/// </summary>/// <param name="filePath">Excel文件路径</param>/// <param name="startRow">第几行开始读取</param>/// <returns></returns>public static DataTable DoReadExcelDataTable(string filePath,int startRow){DataTable dt = new DataTable();if (!File.Exists(filePath)){return dt;}HSSFWorkbook workbook = null;HSSFSheet sheet = null;FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read);workbook = new HSSFWorkbook(fs);sheet = workbook.GetSheetAt(0);HSSFRow row1 = sheet.GetRow(startRow);int cellCount = row1.LastCellNum;//此处是读取列名的,如果不需要列名则注释此代码for (int i = row1.FirstCellNum; i < row1.LastCellNum; i++){DataColumn columItem = new DataColumn(row1.GetCell(i).StringCellValue);dt.Columns.Add(columItem);}int rowCount = sheet.LastRowNum;for (int i = (sheet.FirstRowNum + 1); i <= sheet.LastRowNum; i++){HSSFRow row = sheet.GetRow(i);DataRow dtrow = dt.NewRow();for (int j = row.FirstCellNum; j < cellCount; j++){if (row.GetCell(j) != null){dtrow[j] = row.GetCell(j).ToString();}}dt.Rows.Add(dtrow);}sheet = null;workbook = null;return dt;}

如上代码,读取Excel只需要按照BOOK-SHEET-ROW或者CELL即可取出你想要的内容。

下面通过一个例子来详细看一下如何读取的。
例如,将如下Excel内容读完全取出来,并显示在页面上。

这个代码如下:
读取Excel方法的类:

 public class NPOIHelper{/// <summary>/// 读取Excel保存为datatable/// </summary>/// <param name="filePath">Excel文件路径</param>/// <param name="startRow">第几行开始读取</param>/// <returns></returns>public static DataTable DoReadExcelDataTable(string filePath,int startRow){DataTable dt = new DataTable();if (!File.Exists(filePath)){return dt;}HSSFWorkbook workbook = null;HSSFSheet sheet = null;FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read);workbook = new HSSFWorkbook(fs);sheet = workbook.GetSheetAt(0);HSSFRow row1 = sheet.GetRow(startRow);int cellCount = row1.LastCellNum;//此处是读取列名的,如果不需要列名则注释此代码for (int i = row1.FirstCellNum; i < row1.LastCellNum; i++){DataColumn columItem = new DataColumn(row1.GetCell(i).StringCellValue);dt.Columns.Add(columItem);}int rowCount = sheet.LastRowNum;for (int i = (sheet.FirstRowNum + 1); i <= sheet.LastRowNum; i++){HSSFRow row = sheet.GetRow(i);DataRow dtrow = dt.NewRow();for (int j = row.FirstCellNum; j < cellCount; j++){if (row.GetCell(j) != null){dtrow[j] = row.GetCell(j).ToString();}}dt.Rows.Add(dtrow);}sheet = null;workbook = null;return dt;}}

后台代码:

   public partial class _Default : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){if (!IsPostBack){InitialPage();}}private void InitialPage(){string excelFile = HttpRuntime.AppDomainAppPath.ToString();excelFile += @"\ExcelFile\TestNPOIRead.xls";DataTable dt = NPOIHelper.DoReadExcelDataTable(excelFile, 0);dgExcelDatas.DataSource = dt;dgExcelDatas.DataBind();}}

前台显示代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="TestNOPIReadExcel._Default" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server"><title></title>
</head>
<body><form id="form1" runat="server"><div><asp:GridView ID="dgExcelDatas" runat="server" EnableViewState="false" CellPadding="4"GridLines="Horizontal" PageChange="TextBox" AutoGenerateColumns="False" SortMode="Total" ForeColor="#333333"CellSpacing="1" Width="60%" ShowNoRecordTip="True"><Columns><asp:TemplateField><ItemTemplate><span> <%#Eval("序号")%></span></ItemTemplate><HeaderTemplate><span>序号</span></HeaderTemplate></asp:TemplateField><asp:TemplateField><ItemTemplate><span> <%#Eval("姓名")%></span></ItemTemplate><HeaderTemplate><span>姓名</span></HeaderTemplate></asp:TemplateField><asp:TemplateField><ItemTemplate><span> <%#Eval("年龄")%></span></ItemTemplate><HeaderTemplate><span>年龄</span></HeaderTemplate></asp:TemplateField><asp:TemplateField><ItemTemplate><span> <%#Eval("部门")%></span></ItemTemplate><HeaderTemplate><span>部门</span></HeaderTemplate></asp:TemplateField><asp:TemplateField><ItemTemplate><span> <%#Eval("职位")%></span></ItemTemplate><HeaderTemplate><span>职位</span></HeaderTemplate></asp:TemplateField><asp:TemplateField><ItemTemplate><span> <%#Eval("年终奖(万)")%></span></ItemTemplate><HeaderTemplate><span>年终奖(万)</span></HeaderTemplate></asp:TemplateField><asp:TemplateField><ItemTemplate><span> <%#Eval("备注")%></span></ItemTemplate><HeaderTemplate><span>备注</span></HeaderTemplate></asp:TemplateField></Columns><FooterStyle BackColor="#5D7B9D" Font-Bold="True" HorizontalAlign="Center" ForeColor="White" /><PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" /><SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" /><RowStyle HorizontalAlign="Center" /><HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /><EditRowStyle BackColor="#999999" /><AlternatingRowStyle BackColor="White" ForeColor="#284775" /></asp:GridView></div></form>
</body>
</html>

效果图如下:

工程代码下载: http://download.csdn.net/detail/yysyangyangyangshan/8351175

NPOI操作Excel 002:读取Excel相关推荐

  1. C#操作Excel文件(读取Excel,写入Excel)

    看到论坛里面不断有人提问关于读取excel和导入excel的相关问题.闲暇时间将我所知道的对excel的操作加以总结,现在共享大家,希望给大家能够给大家带了一定的帮助. 另外我们还要注意一些简单的问题 ...

  2. 使用最新的poi-4.1.0.jar导入导出Excel表格——读取Excel表格数据用法

    使用最新的poi-4.1.0.jar导入导出Excel表格--读取Excel表格数据用法 其中主要的一点心得就是在switch语句哪里进行读取数据转换时,我看到网上的一些用法都是使用 HSSFCell ...

  3. NPOI 导入Excel和读取Excel

    1.整个Excel表格叫做工作表:WorkBook(工作薄),包含的叫页(工作表):Sheet:行:Row:单元格Cell. 2.NPOI是POI的C#版本,NPOI的行和列的index都是从0开始 ...

  4. html5 操作excel,html5读取excel表格/在Excel中,一个表格引用另一个表格的数据,用哪些公式进行操作?...

    如何在一个excel表格中获取另一个excel表格中的表格一的表格名并且引用这个表格中的数据? 写代码来实现! 在Excel中,一个表格引用另一个表格的数据,用哪些公式进行操作? 在Excel中,一格 ...

  5. c#操作excel方式三:使用Microsoft.Office.Interop.Excel.dll读取Excel文件

    1.引用Microsoft.Office.Interop.Excel.dll 2.引用命名空间.使用别名 using System.Reflection; using Excel = Microsof ...

  6. python处理Excel表格--读取Excel表格

    文章目录 前言 一.读取Excel表格 二.项目:2010年美国人口普查数据自动化处理 2.1 做什么.如何做? 2.2 print()与pprint() 2.3 完整源码及分析 前言 python处 ...

  7. Java 常用的工具类—判断Excel版本读取Excel/CSV文件

    以下内容均来自实际项目需求,记录下,网上找的读取Excel会出现不少问题,下面代码是经过好多次测试改进的符合现在项目的代码,如有不同要求,请自行修改,代码均只去掉了包名. 注:我们的Excel 第一行 ...

  8. mfc 通过excel驱动读取excel文件

    CString CXXXXX::GetExcelDriver() {char szBuf[2001];WORD cbBufMax = 2000;WORD cbBufOut;char *pszBuf = ...

  9. java读取excel(java读取excel表格存入数据库)

    怎么用java读取excel 里面的数据 * excel文件的读入和更新 * 使用的是jxl 技术. public static void main(String[] args) throws Row ...

  10. 【Unity】用Excel库读取Excel表格(.xlsx或者.xls)

    首先需要下载解析的库  EPPlus,  Excel,  ICSharpCode.SharpZipLib 下载链接: https://download.csdn.net/download/weixin ...

最新文章

  1. 逻辑覆盖测试(四)判定/条件覆盖
  2. 别拒绝生命中偶尔的初恋
  3. 《研磨设计模式》chap12 观察者模式observer(1)模式简介
  4. IPRO_DOCXCC_FILLIN_UUIDTONAME
  5. tt服务器系统,tt服务器
  6. 提升源代码安全管控 从源头保护敏感数据
  7. 通过SpringAop、Filter对Request参数解密和对Response内容加密
  8. Linux内核编程02:Kbuild子系统
  9. 苹果cookie是打开还是关闭_如何避免苹果safari自带浏览器“跟踪”你的信息!
  10. 如何在页面上动态实现浮动窗口?
  11. Java多线程基础(下)
  12. 《大学“电路分析基础”课程实验合集.实验四》丨线性电路特性的研究
  13. 2022-2028全球ERV空气交换器行业调研及趋势分析报告
  14. 如果去掉数学前后的空格_excel表格数据消除前后空格-EXCEL表格中数据后面的空格怎么去掉,一条条手工删......
  15. 【c#】DGV中复制粘贴数据最详细代码
  16. 机器学习可行性与VC dimension
  17. 因果6-估计因果效应
  18. opencv-python(cv2)——如何读取和保存中文路径图片(含代码)
  19. java调用天气预报案例
  20. php支付回调怎么写_php如何接入微信支付回调接口?PHP如何验证微信支付签名?PHP处理微信支付回调的函数...

热门文章

  1. mysql 连接报错2059
  2. 关于谷歌浏览器调试时切换到移动设备没有外观
  3. gz文件解压 linux,linux下.tar.gz和.gz文件解压详解
  4. 服务器解决低危漏洞方法
  5. 控制Boos缓慢的转向主角
  6. vim粘贴代码的时候取消自动缩进
  7. FFmpeg入门详解之9:Audacity音频工具
  8. RssReader.java解析
  9. 开学买什么东西合适呢!大学生开学必备好物推荐购物指南
  10. 《Where's My Water? / 鳄鱼小顽皮爱洗澡》小顽皮的故事内购关卡解锁