C#代码实现 读取Excel中没有字段信息的数据
(工作表为Sheet1)如图,没有字段值,只有默认的A,B,C列,想只读取A列的值,并且分别存放到数组中,求详细代码。。。。。。。...
(工作表为Sheet1)
如图,没有字段值,只有默认的A,B,C列,想只读取A列的值,并且分别存放到数组中,
求详细代码。。。。。。。 展开
如图,没有字段值,只有默认的A,B,C列,想只读取A列的值,并且分别存放到数组中,
求详细代码。。。。。。。 展开
1个回答
展开全部
代码如下:
protected void TestExcel() {
OleDbConnection oleCon = null;
OleDbCommand oleCmd = null;
OleDbDataReader oleDr = null;
List<string> list = new List<string>();
try {
oleCon = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=d:\\t1.xlsx;Extended Properties=\"Excel 12.0;HDR=NO;IMEX=1\""); // 创建到Excel文件的数据连接, 设定为d盘下的t1.xlsx文件
oleCon.Open(); // 打开数据连接
oleCmd = new OleDbCommand("", oleCon); //创建数据命令对象
oleCmd.CommandText = "select [F1] from [Sheet1$]"; // 设置查询命令
oleDr = oleCmd.ExecuteReader(); // 获得结果集对象
while (oleDr.Read()) { // 循环读取数据
if (!oleDr.IsDBNull(0)) { // 数据不为空
list.Add(oleDr[0].ToString()); // 添加数据到列表中
}
}
// 针对list进行处理
}
catch (Exception e) {
// 异常处理
}
finally { // 释放OLE DB数据资源
if (oleDr != null) {
oleDr.Close();
oleDr.Dispose();
oleDr = null;
}
if (oleCmd != null) {
oleCmd.Dispose();
oleCmd = null;
}
if (oleCon != null) {
oleCon.Close();
oleCon.Dispose();
oleCon = null;
}
}
}
注意:
1) 需要引入System.Data.OleDb命名空间;
2) 此处使用的Excel版本为2007(使用ACE引擎)
3) 此处是取得字串值, 而非数字值(主要是因为如果扫描行数中数据类型不是数值居多的话, Excel类型有可能被认定为非数值型, 这样做保险些)
4) 这里使用List<string>来保存读取到的每行数据, 实在需要数组的话可以使用List<string>的ToArray方法转成数组
5) 也可以使用DCOM的方式读取, 较为复杂
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询