使用C#对Excel文件进行内容筛选

(一) 问题

一个使用C#编写的小工具,对指定文件夹下的所有Excel文件进行筛选,如果一个文件中含有某个指定的字符串,记录该文件,并且定位这个字符串出现的位置。

网上使用C#对Excel文件进行读写的方法主要有四种:

(1)使用OleDb的方法读取Excel文件;

(2)将xls文件转化为csv文件再进行读取;

(3)使用NPOI进行Excel文件读取;

(4)使用COM组件进行读取。


(二)尝试

这几种读取Excel文件的方法我都了解了一下,每种方法各有利弊。下面进行简单的描述:

(1)使用OleDb的方法读取Excel文件

这种方法相关内容在网上可以找到很多,很多人把这种方法当作读取Excel文件的主流。简单来说就是将Excel文件当作数据库进行操作,对表中内容使用sql语句进行提取,其间需要使用到DataSet类。

顺便说一句,对于不同的.net数据提供者,ADO.NET采用不同的Connection对象连接数据库。这些Connection对我们屏蔽了实现的具体细节,并提供了一种统一的实现方式。Connection类有四种:SqlConnection、OleDbConnection、OdbcConnection和OracleConnection。分别用来连接SQL Server数据库、OLE DB数据库(如Access)、ODBC数据库、Oracle数据库。与数据库的所有通讯都是通过Connection对象完成的。本文简单谈一谈OleDb。

建立OleDb连接的核心是建立连接字符串ConnectionString,主要注意的是,对xls文件(Excel2003)和xlsx文件(Excel2007)进行连接的连接字符串不同。假设excelPath为目的excel文件的路径,则建立OleDb连接的语句分别为:

OleDbConnection connection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + excelPath + ";" + "Extended Properties=\"Excel 8.0;HDR=yes;IMEX=1;\"");

OleDbConnection connection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.12.0;Data Source=" + excelPath + ";" + "Extended Properties=\"Excel 12.0;HDR=yes;IMEX=1;\"");

其中"HDR=yes"是说Excel文件的第一列是列明而不是数。如果列中数据类型不一致,使用"IMEX=1"可以避免类型冲突。下面是一段网上的示例代码:

public DataSet ExcelToDS(string Path)  
{  
    string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source="+ Path +";"+"Extended Properties=Excel 8.0;";  
    OleDbConnection conn = new OleDbConnection(strConn);  
    conn.Open(); 
    string strExcel = "";  
    OleDbDataAdapter myCommand = null;  
    DataSet ds = null;  
    strExcel="select * from [sheet1$]";  
    myCommand = ne
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值