您的位置:首页 > 编程语言 > C#

C# 读取 excel 中 sheet 及数据到DataTable

2012-05-18 15:58 597 查看
public class Utils

{

public static DataSet LoadDataFromExcel(string fileName)

{

try

{

List<string> names = new List<string>();

System.Data.DataTable dtNames = GetExcelTableName(fileName);

for (int i = 0; i < dtNames.Rows.Count; i++)

{

if (dtNames.Rows[i]["Table_Name"].ToString() == "_xlnm#_FilterDatabase") continue;

names.Add(dtNames.Rows[i]["Table_Name"].ToString());

}

string strConn = GetConString(fileName);

DataSet OleDsExcle = new DataSet();

OleDbConnection OleConn = new OleDbConnection(strConn);

OleDbDataAdapter OleDaExcel = null; OleConn.Open();

for (int i = 0; i < names.Count; i++)

{

DataSet dsTmp = new DataSet();

String sql = String.Empty;

sql += String.Format("SELECT * FROM [{0}];", names[i]);

OleDaExcel = new OleDbDataAdapter(sql, OleConn);

OleDaExcel.Fill(dsTmp, names[i]);

OleDsExcle.Tables.Add(dsTmp.Tables[0].Copy());

}

OleConn.Close();

return OleDsExcle;

}

catch

{

return null;

}

}

public static System.Data.DataTable GetExcelTableName(string fileName)

{

try

{

if (System.IO.File.Exists(fileName))

{

OleDbConnection _ExcelConn = new OleDbConnection(GetConString(fileName));

_ExcelConn.Open();

System.Data.DataTable _Table = _ExcelConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);

_ExcelConn.Close();

return _Table;

}

return null;

}

catch

{

return null;

}

}

private static string GetConString(string fileName)

{

return "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="

+ fileName + ";Extended Properties='Excel 8.0;HDR=False;IMEX=1'";

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: