.NET读取Execl数据
Posted 擅长死循环
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.NET读取Execl数据相关的知识,希望对你有一定的参考价值。
需要引用
using System.Data;
using System.Data.OleDb;
调用: var customerInfoList = await GetExeclTableAsync("D:/......./ddd.xlsx");
封装方法
#region 读取Excel中的数据
/// <summary>
/// 读取Excel中的数据 支持表头(.xlsx) 不支持表头(.xls)
/// </summary>
/// <param name="fileName">Excel文件路径</param>
/// <returns>Excel中的数据</returns>
public async Task<DataTable> GetExeclTableAsync(string fileName)
OleDbConnection Conn = null;
DataTable dt = null;
string connString = string.Empty;
OleDbDataAdapter da = new OleDbDataAdapter();
DataTable dataTable = new DataTable();
try
string FileType = fileName.Substring(fileName.LastIndexOf("."));
if (FileType == ".xls")
connString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + fileName + ";Extended Properties=Excel 8.0;";
else//.xlsx
connString = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + fileName + ";" + ";Extended Properties=\\"Excel 12.0;HDR=YES;IMEX=1\\"";
// 创建连接对象
Conn = new OleDbConnection(connString);
// 打开数据库连接
Conn.Open();
//获取Excel工作薄中Sheet页(工作表)名集合
DataTable ss = Conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] null, null, null, "Table" );
string sql_F = "Select * FROM [0]";
for (int i = 0; i < ss.Rows.Count; i++)
da.SelectCommand = new OleDbCommand(String.Format(sql_F, ss.Rows[i][2].ToString()), Conn);
da.Fill(dataTable);
return dataTable;
catch (Exception)
return null;
finally
// 释放
if (Conn != null)
Conn.Close();
Conn.Dispose();
if (dt != null)
dt.Dispose();
#endregion
以上是关于.NET读取Execl数据的主要内容,如果未能解决你的问题,请参考以下文章