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. Android 联系人字母排序(仿微信)

    现在很多APP只要涉及到联系人的界面,几乎都会采取字母排序以及导航的方式.作为程序猿,这种已经普及的需求还是需要学习的,于是小生开始了在网上默默的学习之路,网上学习的资料质量参差不齐,不过也有很不错的 ...

  2. HTML、JS、CSS之特殊字符

    可能这是冷知识了,并不为多数人知道像HTML.JS.CSS它们的特殊字符的写法,我也是在网上收录的在这里make一下: 箭头类 符号 UNICODE 符号 UNICODE HTML JS CSS HT ...

  3. ef codeFirst 修改表结构 增加字段等 EF code first需要重新生成库导致数据丢失的问题.

    需要在库程序包管理器里依次执行以下命令: 1.启用迁移功能:Enable-Migrations -ContextTypeName MvcMovie.Models.MovieDbContext 2.建立 ...

  4. php 读写xml 修改xml

    需要修改的xml <?xml version="1.0"?> <config> <administration> <adminuser&g ...

  5. asp.net中c# TextBox.MaxLength例子

    TextBox.MaxLength 属性获取或设置文本框中最多允许的字符数文本框中最多允许的字符数.默认值为 0,表示未设置该属性.使用 MaxLength 属性限定可以在 TextBox 控件中输入 ...

  6. java中vector与hashtable操作详解

    众所周知,java中vector与hashtable是线程安全的,主要是java对两者的操作都加上了synchronized,也就是上锁了.因此 在vector与hashtable的操作是不会出现问题 ...

  7. 2015-0306—DataLList

    DataList具有repeater的所有功能,不同的是DataList自动将模板绘制成为一个表格,每一行数据都绘制成<tr>. 一.SQL的准备工作: 按照以下代码创建: create ...

  8. UI3_UITableViewDelete(多选)

    // AppDelegate.m // UI3_UITableViewDelete(多选) // // Created by zhangxueming on 15/7/14. // Copyright ...

  9. WCF之实例模型

    PerCall. 为每次调用创建新的服务对象. 内存使用量最小,增加整体的吞吐量. 状态不保存,服务实例及时释放. 单例的状态没有办法保存.所以应使用数据库或者文件或者全局变量来保存服务实例的状态.如 ...

  10. (转)RabbitMQ 集群与高可用配置

    集群概述 环境 配置步骤 集群概述 通过 Erlang 的分布式特性(通过 magic cookie 认证节点)进行 RabbitMQ 集群,各 RabbitMQ 服务为对等节点,即每个节点都提供服务 ...