当前位置: 编程技术>.net/c#/asp.net
c#.net 读取Excel数据到DataTable中的代码
来源: 互联网 发布时间:2014-08-30
本文导语: c#.net 读取Excel数据到DataTable中,分为几种不同的情况,具体大家参照如下代码中的注释,可以帮助理解。 代码1: 代码示例: /// /// 获取指定路径、指定工作簿名称的Excel数据:取第一个sheet的数据 /// /// 文件存储路径 /// ...
c#.net 读取Excel数据到DataTable中,分为几种不同的情况,具体大家参照如下代码中的注释,可以帮助理解。
代码1:
代码示例:
///
/// 获取指定路径、指定工作簿名称的Excel数据:取第一个sheet的数据
///
/// 文件存储路径
/// 工作簿名称
/// 如果争取找到了数据会返回一个完整的Table,否则返回异常
public DataTable GetExcelData(string astrFileName)
{
string strSheetName = GetExcelWorkSheets(astrFileName)[0].ToString();
return GetExcelData(astrFileName, strSheetName);
}
/// 获取指定路径、指定工作簿名称的Excel数据:取第一个sheet的数据
///
/// 文件存储路径
/// 工作簿名称
/// 如果争取找到了数据会返回一个完整的Table,否则返回异常
public DataTable GetExcelData(string astrFileName)
{
string strSheetName = GetExcelWorkSheets(astrFileName)[0].ToString();
return GetExcelData(astrFileName, strSheetName);
}
代码2:
代码示例:
///
/// 返回指定文件所包含的工作簿列表;如果有WorkSheet,就返回以工作簿名字命名的ArrayList,否则返回空
///
/// 要获取的Excel
/// 如果有WorkSheet,就返回以工作簿名字命名的ArrayList,否则返回空
public ArrayList GetExcelWorkSheets(string strFilePath)
{
ArrayList alTables = new ArrayList();
OleDbConnection odn = new OleDbConnection(GetExcelConnection(strFilePath));
odn.Open();
DataTable dt = new DataTable();
dt = odn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
if (dt == null)
{
throw new Exception("无法获取指定Excel的架构。");
}
foreach (DataRow dr in dt.Rows)
{
string tempName = dr["Table_Name"].ToString();
int iDolarIndex = tempName.IndexOf('$');
if (iDolarIndex > 0)
{
tempName = tempName.Substring(0, iDolarIndex);
}
//修正了Excel2003中某些工作薄名称为汉字的表无法正确识别的BUG。
if (tempName[0] == ''')
{
if (tempName[tempName.Length - 1] == ''')
{
tempName = tempName.Substring(1, tempName.Length - 2);
}
else
{
tempName = tempName.Substring(1, tempName.Length - 1);
}
}
if (!alTables.Contains(tempName))
{
alTables.Add(tempName);
}
}
odn.Close();
if (alTables.Count == 0)
{
return null;
}
return alTables;
}
/// 返回指定文件所包含的工作簿列表;如果有WorkSheet,就返回以工作簿名字命名的ArrayList,否则返回空
///
/// 要获取的Excel
/// 如果有WorkSheet,就返回以工作簿名字命名的ArrayList,否则返回空
public ArrayList GetExcelWorkSheets(string strFilePath)
{
ArrayList alTables = new ArrayList();
OleDbConnection odn = new OleDbConnection(GetExcelConnection(strFilePath));
odn.Open();
DataTable dt = new DataTable();
dt = odn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
if (dt == null)
{
throw new Exception("无法获取指定Excel的架构。");
}
foreach (DataRow dr in dt.Rows)
{
string tempName = dr["Table_Name"].ToString();
int iDolarIndex = tempName.IndexOf('$');
if (iDolarIndex > 0)
{
tempName = tempName.Substring(0, iDolarIndex);
}
//修正了Excel2003中某些工作薄名称为汉字的表无法正确识别的BUG。
if (tempName[0] == ''')
{
if (tempName[tempName.Length - 1] == ''')
{
tempName = tempName.Substring(1, tempName.Length - 2);
}
else
{
tempName = tempName.Substring(1, tempName.Length - 1);
}
}
if (!alTables.Contains(tempName))
{
alTables.Add(tempName);
}
}
odn.Close();
if (alTables.Count == 0)
{
return null;
}
return alTables;
}
代码3:
代码示例:
///
/// 获取指定路径、指定工作簿名称的Excel数据
/// http://www.
/// 文件存储路径
/// 工作簿名称
/// 如果争取找到了数据会返回一个完整的Table,否则返回异常
public DataTable GetExcelData(string FilePath, string WorkSheetName)
{
DataTable dtExcel = new DataTable();
OleDbConnection con = new OleDbConnection(GetExcelConnection(FilePath));
OleDbDataAdapter adapter = new OleDbDataAdapter("Select * from [" + WorkSheetName + "$]", con);
//读取
con.Open();
adapter.FillSchema(dtExcel, SchemaType.Mapped);
adapter.Fill(dtExcel);
con.Close();
dtExcel.TableName = WorkSheetName;
//返回
return dtExcel;
}
/// 获取指定路径、指定工作簿名称的Excel数据
/// http://www.
/// 文件存储路径
/// 工作簿名称
/// 如果争取找到了数据会返回一个完整的Table,否则返回异常
public DataTable GetExcelData(string FilePath, string WorkSheetName)
{
DataTable dtExcel = new DataTable();
OleDbConnection con = new OleDbConnection(GetExcelConnection(FilePath));
OleDbDataAdapter adapter = new OleDbDataAdapter("Select * from [" + WorkSheetName + "$]", con);
//读取
con.Open();
adapter.FillSchema(dtExcel, SchemaType.Mapped);
adapter.Fill(dtExcel);
con.Close();
dtExcel.TableName = WorkSheetName;
//返回
return dtExcel;
}
代码4:
代码示例:
///
/// 获取链接字符串
///
///
///
public string GetExcelConnection(string strFilePath)
{
if (!File.Exists(strFilePath))
{
throw new Exception("指定的Excel文件不存在!");
}
return "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strFilePath + ";Extended properties="Excel 8.0;Imex=1;HDR=Yes;"";
//@"Provider=Microsoft.Jet.OLEDB.4.0;" +
//@"Data Source=" + strFilePath + ";" +
//@"Extended Properties=" + Convert.ToChar(34).ToString() +
//@"Excel 8.0;" + "Imex=1;HDR=Yes;" + Convert.ToChar(34).ToString();
}
/// 获取链接字符串
///
///
///
public string GetExcelConnection(string strFilePath)
{
if (!File.Exists(strFilePath))
{
throw new Exception("指定的Excel文件不存在!");
}
return "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strFilePath + ";Extended properties="Excel 8.0;Imex=1;HDR=Yes;"";
//@"Provider=Microsoft.Jet.OLEDB.4.0;" +
//@"Data Source=" + strFilePath + ";" +
//@"Extended Properties=" + Convert.ToChar(34).ToString() +
//@"Excel 8.0;" + "Imex=1;HDR=Yes;" + Convert.ToChar(34).ToString();
}