ado读取excel
public static class ExcelHelper
{
/// <summary>
/// 读取所有的表(每个sheet映射为一个表)
/// </summary>
/// <param name="filepath"></param>
/// <returns></returns>
public static System.Collections.Generic.List<string> GetTables(string filepath)
{
List<string> r=new List<string>();
if (File.Exists(filepath))
{
//string connStr="Provider=Microsoft.Jet." + "OLEDB.4.0;Extended Properties=\"Excel 8.0\";Data Source=" + filepath;
string connStr = "Provider=Microsoft.ACE.OLEDB.12.0;data source=" + filepath + ";Extended Properties='Excel 12.0 Xml;HDR=YES'";
using (OleDbConnection conn = new OleDbConnection(connStr))
{
conn.Open();
DataTable dt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
for (int i = 0; i < dt.Rows.Count; i++)
{
r.Add(dt.Rows[i][2].ToString().Trim());
}
}
}
return r;
}
/// <summary>
/// 读取表中的数据
/// </summary>
/// <param name="filepath"></param>
/// <param name="tableName">表名</param>
/// <returns></returns>
public static DataTable GetTableData(string filepath,string tableName)
{
DataTable r = new DataTable();
if (File.Exists(filepath))
{
//string connStr = "Provider=Microsoft.Jet." + "OLEDB.4.0;Extended Properties=\"Excel 8.0;HDR=FALSE;IMEX=1\";Data Source=" + filepath;
string connStr = "Provider=Microsoft.ACE.OLEDB.12.0;data source=" + filepath + ";Extended Properties='Excel 12.0 Xml;HDR=YES'";
using (OleDbConnection conn = new OleDbConnection(connStr))
{
conn.Open();
string sql = "select * from [" + tableName+ "]";
OleDbCommand oc = new OleDbCommand(sql, conn);
OleDbDataAdapter oda = new OleDbDataAdapter(oc);
oda.Fill(r);
}
}
return r;
}
/// <summary>
/// 读取表中的数据
/// </summary>
/// <param name="filepath"></param>
/// <param name="tableIndex">表索引,几第n个表</param>
/// <returns></returns>
public static DataTable GetTableData(string filepath, int tableIndex)
{
var ts= GetTables(filepath);
if (ts.Count > tableIndex)
{
string tableName = ts[tableIndex];
DataTable r = new DataTable();
if (File.Exists(filepath))
{
//string connStr = "Provider=Microsoft.Jet." + "OLEDB.4.0;Extended Properties=\"Excel 8.0;HDR=FALSE;IMEX=1\";Data Source=" + filepath;
string connStr = "Provider=Microsoft.ACE.OLEDB.12.0;data source=" + filepath + ";Extended Properties='Excel 12.0 Xml;HDR=YES'";
using (OleDbConnection conn = new OleDbConnection(connStr))
{
conn.Open();
string sql = "select * from [" + tableName + "]";
OleDbCommand oc = new OleDbCommand(sql, conn);
OleDbDataAdapter oda = new OleDbDataAdapter(oc);
oda.Fill(r);
}
}
return r;
}
else
{
return null;
}
}
/// <summary>
/// 获取表结构(表的字段)
/// </summary>
/// <param name="filepath"></param>
/// <param name="tableName"></param>
/// <returns></returns>
public static System.Collections.Generic.List<string> GetTableFields(string filepath, string tableName)
{
List<string> r=new List<string>();
if (File.Exists(filepath))
{
//string connStr = "Provider=Microsoft.Jet." + "OLEDB.4.0;Extended Properties=\"Excel 8.0;HDR=FALSE;IMEX=1\";Data Source=" + filepath;
string connStr = "Provider=Microsoft.ACE.OLEDB.12.0;data source=" + filepath + ";Extended Properties='Excel 12.0 Xml;HDR=YES'";
using (OleDbConnection conn = new OleDbConnection(connStr))
{
conn.Open();
string sql = "select * from [" + tableName + "] where 1=2";
OleDbCommand oc = new OleDbCommand(sql, conn);
OleDbDataAdapter oda = new OleDbDataAdapter(oc);
DataTable dt = new DataTable();
oda.Fill(dt);
for (int i = 0; i < dt.Columns.Count; i++)
{
r.Add(dt.Columns[i].Caption);
}
}
}
return r;
}
}
{
/// <summary>
/// 读取所有的表(每个sheet映射为一个表)
/// </summary>
/// <param name="filepath"></param>
/// <returns></returns>
public static System.Collections.Generic.List<string> GetTables(string filepath)
{
List<string> r=new List<string>();
if (File.Exists(filepath))
{
//string connStr="Provider=Microsoft.Jet." + "OLEDB.4.0;Extended Properties=\"Excel 8.0\";Data Source=" + filepath;
string connStr = "Provider=Microsoft.ACE.OLEDB.12.0;data source=" + filepath + ";Extended Properties='Excel 12.0 Xml;HDR=YES'";
using (OleDbConnection conn = new OleDbConnection(connStr))
{
conn.Open();
DataTable dt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
for (int i = 0; i < dt.Rows.Count; i++)
{
r.Add(dt.Rows[i][2].ToString().Trim());
}
}
}
return r;
}
/// <summary>
/// 读取表中的数据
/// </summary>
/// <param name="filepath"></param>
/// <param name="tableName">表名</param>
/// <returns></returns>
public static DataTable GetTableData(string filepath,string tableName)
{
DataTable r = new DataTable();
if (File.Exists(filepath))
{
//string connStr = "Provider=Microsoft.Jet." + "OLEDB.4.0;Extended Properties=\"Excel 8.0;HDR=FALSE;IMEX=1\";Data Source=" + filepath;
string connStr = "Provider=Microsoft.ACE.OLEDB.12.0;data source=" + filepath + ";Extended Properties='Excel 12.0 Xml;HDR=YES'";
using (OleDbConnection conn = new OleDbConnection(connStr))
{
conn.Open();
string sql = "select * from [" + tableName+ "]";
OleDbCommand oc = new OleDbCommand(sql, conn);
OleDbDataAdapter oda = new OleDbDataAdapter(oc);
oda.Fill(r);
}
}
return r;
}
/// <summary>
/// 读取表中的数据
/// </summary>
/// <param name="filepath"></param>
/// <param name="tableIndex">表索引,几第n个表</param>
/// <returns></returns>
public static DataTable GetTableData(string filepath, int tableIndex)
{
var ts= GetTables(filepath);
if (ts.Count > tableIndex)
{
string tableName = ts[tableIndex];
DataTable r = new DataTable();
if (File.Exists(filepath))
{
//string connStr = "Provider=Microsoft.Jet." + "OLEDB.4.0;Extended Properties=\"Excel 8.0;HDR=FALSE;IMEX=1\";Data Source=" + filepath;
string connStr = "Provider=Microsoft.ACE.OLEDB.12.0;data source=" + filepath + ";Extended Properties='Excel 12.0 Xml;HDR=YES'";
using (OleDbConnection conn = new OleDbConnection(connStr))
{
conn.Open();
string sql = "select * from [" + tableName + "]";
OleDbCommand oc = new OleDbCommand(sql, conn);
OleDbDataAdapter oda = new OleDbDataAdapter(oc);
oda.Fill(r);
}
}
return r;
}
else
{
return null;
}
}
/// <summary>
/// 获取表结构(表的字段)
/// </summary>
/// <param name="filepath"></param>
/// <param name="tableName"></param>
/// <returns></returns>
public static System.Collections.Generic.List<string> GetTableFields(string filepath, string tableName)
{
List<string> r=new List<string>();
if (File.Exists(filepath))
{
//string connStr = "Provider=Microsoft.Jet." + "OLEDB.4.0;Extended Properties=\"Excel 8.0;HDR=FALSE;IMEX=1\";Data Source=" + filepath;
string connStr = "Provider=Microsoft.ACE.OLEDB.12.0;data source=" + filepath + ";Extended Properties='Excel 12.0 Xml;HDR=YES'";
using (OleDbConnection conn = new OleDbConnection(connStr))
{
conn.Open();
string sql = "select * from [" + tableName + "] where 1=2";
OleDbCommand oc = new OleDbCommand(sql, conn);
OleDbDataAdapter oda = new OleDbDataAdapter(oc);
DataTable dt = new DataTable();
oda.Fill(dt);
for (int i = 0; i < dt.Columns.Count; i++)
{
r.Add(dt.Columns[i].Caption);
}
}
}
return r;
}
}