NPOI 是 POI 项目的 .NET 版本。使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 WORD/EXCEL 文档进行读写。NPOI是构建在POI 3.x版本之上的,它可以在没有安装Office的情况下对Word/Excel文档进行读写操作。

需求:根据excel表格提供的SVN相对路径将本地中A文件夹中涉及到的文件拷贝到B文件中(A和B两个文件路径所在位置不同)

分析:

  1. 如何读取excle文档?(怎样根据读取excle中的指定sheet信息,如何读取某一列数据)
  2. 如果本地PS端未按照office办公软件,如何读取?

常规做法如下:

把excel表格当作一个本地库(可以理解为本地数据库),利用ADO.ENT进行数据读取,具体代码如下:

 //创建一个数据链接
string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source =" + fileName + ";Extended Properties=Excel 8.0";
using (OleDbConnection myConn = new OleDbConnection(strCon))
{
string strCom = " SELECT * FROM [过程文档$] ";
myConn.Open();
//打开数据链接,得到一个数据集
OleDbDataAdapter myCommand = new OleDbDataAdapter(strCom, myConn);
//创建一个 DataSet对象
DataSet ds = new DataSet();
//得到自己的DataSet对象
myCommand.Fill(ds, "[过程文档$]");
DataTable dt = ds.Tables[];
            
}

通过上述代码,我们的调试的过程中发现以下几个问题

  1. 读取excel的版本必须和本地excel的provider保持一直(这种情况相对不灵活,如果excel版本更改,其他配置都需更改);
  2. 发现错误调试过程比较麻烦,耗费时间较大
  3. 本地必须安装office excel软件

那既然用传统的方式操作比较麻烦,下面提供NPOI的解决方案,代码如下:

            using (FileStream sr = new FileStream(fileName, FileMode.OpenOrCreate))
{
//根据路径通过已存在的excel来创建HSSFWorkbook,即整个excel文档
HSSFWorkbook workbook = new HSSFWorkbook(sr); //获取excel的第一个sheet
Sheet sheet = workbook.GetSheetAt(); //最后一列的标号 即总的行数
int rowCount = sheet.LastRowNum; //从第二行开始,第一行为列名
for (int i = ; i <= sheet.LastRowNum; i++)
{
//获取索引2即为svn源路径
string path = sheet.GetRow(i).GetCell().ToString();
if (!developPaths.Contains(path))
{
developPaths.Add(GetDevelopPath(path, copyCodeFileName));
}
} }

相对于传统做法来讲,npoi将每个sheet当初了一个table,其代码量相对较少,对开发的要求也比较低。

以下是NPOI的下载地址

http://download.csdn.net/detail/jun118166/7243415

NPOI读取Excel数据应用的更多相关文章

  1. 使用NPOI读取Excel数据到DataTable

    如今XML文件的存储格式大行其道,可是也不是适用于全部情况,非常多单位的数据交换还是使用Excel的形式.这就使得我们须要读取Excel内的数据.载入到程序中进行处理.可是如何有效率的读取,如何使程序 ...

  2. 使用NPOI读取Excel数据并写入SQLite

    首先,我们来建一个数据库,我们就叫Hello.db(不一定是db后缀,你可以sqlite,sqlite3,db3)都可以作为识别,然后往里面建一个空的表格,如下图所示 然后建一个Excel表格,往表格 ...

  3. NPOI读取Excel 数据 转。。。

      public DataTable am_Decode() { DataTable table = new DataTable(); string[] strAscDataList = Direct ...

  4. NPOI读取Excel遇到的坑

    NPOI是POI的.NET版本.POI是用Java写成的库,能帮助用户在没有安装Office环境下读取Office2003-2007文件.NPOI在.NET环境下使用,能读写Excel/Word文件. ...

  5. NPOI操作excel之读取excel数据

    NPOI 是 POI 项目的 .NET 版本.POI是一个开源的Java读写Excel.WORD等微软OLE2组件文档的项目.  一.下载引用 去NPOI官网http://npoi.codeplex. ...

  6. NPOI读取Excel帮助类,支持xls与xlsx,实现公式解析,空行的处理

    NPOI读取Excel(2003或者2010)返回DataTable.支持公式解析,空行处理. /// <summary>读取excel /// 默认第一行为表头 /// </sum ...

  7. NPOI读取Excel表格类

    public class NPOIHelper    {        private HSSFWorkbook workbook;        public static IWorkbook Lo ...

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

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

  9. .NET Core 使用NPOI读取Excel返回泛型List集合

    我是一名 ASP.NET 程序员,专注于 B/S 项目开发.累计文章阅读量超过一千万,我的博客主页地址:https://www.itsvse.com/blog_xzz.html 网上有很多关于npoi ...

随机推荐

  1. 破解软件系列-PE文件深入浅出之Section Table节表

    我们已经学了许多关于 DOS header 和 PE header 的知识.接下来就该轮到 section table(节表)了.节表其实就是紧挨着 PE header 的一结构数组.该数组成员的数目 ...

  2. JS 操作JSON字符串

    用Js的eval解析JSON中的注意点 在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数. 2. 使用Function对象来进行返回解析. 使用eva ...

  3. PHP利用GD库画曲线

    效果: PHP代码 <?php Header('Content-type: image/png;Charset:utf-8'); //声明图片 $im = imagecreate(400,200 ...

  4. C#this关键字用法

    用法一 this关键字的作用是解决当传入参数的名称和数据字段的名称,类型完全相同时产生的作用于歧义,一般情况下我们应该避免产生重名的习惯 先来演示下: class Airplane { public ...

  5. IOS添加控件

    YJQApp *appInfo =self.apps[i]; //.添加图片 UIImageView * iconView = [[UIImageView alloc]init]; CGFloat i ...

  6. onclick跳转

    ☆如果是本页显示可以直接用location,方法如下: ①onclick="javascript:window.location.href='URL'" ②onclick=&quo ...

  7. AutoLayout的三种设置方式之——NSLayoutConstraint代码篇

    AutoLayout是从IOS 6开始苹果引入来取代autoresizing的新的布局技术,该技术有三种设置方式,等下我来为大家一一叙述一下. 在说三种设置方式前,我们先简单的说一下autolayou ...

  8. oledb 操作 excel

    oledb excel http://wenku.baidu.com/search?word=oledb%20excel&ie=utf-8&lm=0&od=0 [Asp.net ...

  9. (转载)浅谈我对DDD领域驱动设计的理解

    原文地址:http://www.cnblogs.com/netfocus/p/5548025.html 从遇到问题开始 当人们要做一个软件系统时,一般总是因为遇到了什么问题,然后希望通过一个软件系统来 ...

  10. 一点总结-关于debug比赛

    上午的题目是: 1. main里面定义的变量必须手动初始化,使用memset或者其他,函数外或者函数内,会进行初始化为0. 2. 最长回文子串的马拉车manacher算法,不会写! 3. 数字三角形d ...