C#操作Excel数据导入(不安装EXCEL的情况)
2009-03-13 09:08
579 查看
今日,由于工作的需要,对EXCEL的的数据导入进行了点小研究,通过查阅MSDN和各个网站的文章以后,在这里做一下简单的总结。
事先声明一下,在64为系统下面这些方法均无效,如果有人能在64位系统下面实现这个功能的话,希望提能提供方法,谢谢!
1.Microsoft Jet 数据库引擎
1). 获得数据连接
string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" + url + "';Extended Properties=/"Excel 8.0;HDR=YES;IMEX=1;/""; //url为EXCEL的绝对路径
OleDbConnection conn = new OleDbConnection(str);
conn.Open();
2). 获得所有的工作表名
DataTable dt = conn.GetOdbcSchemaTable(System.Data.Odbc.OdbcSchemaGuid.Tables_Info, null);
string excelSheets = "";
foreach (DataRow row in dt.Rows)
{
if (row["CARDINALITY"].ToString() == "0")
{
excelSheets += "|" + row["TABLE_NAME"].ToString();
}
}
string[] _tableNames = excelSheets.Substring(1).Split('|');
3). 获得数据
OleDbCommand comm = new OleDbCommand("select * from [" + TableName+ "]", conn); //Tablel为EXCEL的工作表名
OleDbDataAdapter oda = new OleDbDataAdapter(comm);
DataSet ds = new DataSet();
oda.Fill(ds);
DataTable ExcelData = ds.Tables[0];
2.odbc
1). 获得数据连接
string connStr = "Driver={Microsoft Excel Driver (*.xls)};DBQ=" + url + ";ReadOnly=0";//url为EXCEL的绝对路径
OdbcConnection conn = new OdbcConnection(str);
conn.Open();
2). 获得所有的工作表名
DataTable dt = conn.GetSchema("Tables");
string excelSheets = "";
foreach (DataRow row in dt.Rows)
{
if (row["TABLE_TYPE"].ToString() == "SYSTEM TABLE")
{
excelSheets += "|" + row["TABLE_NAME"].ToString();
}
}
string[] _tableNames = excelSheets.Substring(1).Split('|');
3). 获得数据
OdbcCommand comm = new OdbcCommand("select * from [" + TableName+ "]", conn); //Tablel为EXCEL的工作表名
OdbcDataAdapter oda = new OdbcDataAdapter(comm);
DataSet ds = new DataSet();
oda.Fill(ds);
DataTable ExcelData = ds.Tables[0];
这两个方法其实大同小异,区别只是在于连接字符串的不同和组织架构里面对TableName的定义不一样而已,个人觉得使用ODBC的方法在获得工作表名称上面比Microsoft Jet 数据库引擎要更加准切一点,当然本人还是菜鸟一个,有写的不对或者说得不对的地方欢迎大家斧正,如果有新的方法也请大家能够不要吝啬,拿出来跟大家分享!
事先声明一下,在64为系统下面这些方法均无效,如果有人能在64位系统下面实现这个功能的话,希望提能提供方法,谢谢!
1.Microsoft Jet 数据库引擎
1). 获得数据连接
string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" + url + "';Extended Properties=/"Excel 8.0;HDR=YES;IMEX=1;/""; //url为EXCEL的绝对路径
OleDbConnection conn = new OleDbConnection(str);
conn.Open();
2). 获得所有的工作表名
DataTable dt = conn.GetOdbcSchemaTable(System.Data.Odbc.OdbcSchemaGuid.Tables_Info, null);
string excelSheets = "";
foreach (DataRow row in dt.Rows)
{
if (row["CARDINALITY"].ToString() == "0")
{
excelSheets += "|" + row["TABLE_NAME"].ToString();
}
}
string[] _tableNames = excelSheets.Substring(1).Split('|');
3). 获得数据
OleDbCommand comm = new OleDbCommand("select * from [" + TableName+ "]", conn); //Tablel为EXCEL的工作表名
OleDbDataAdapter oda = new OleDbDataAdapter(comm);
DataSet ds = new DataSet();
oda.Fill(ds);
DataTable ExcelData = ds.Tables[0];
2.odbc
1). 获得数据连接
string connStr = "Driver={Microsoft Excel Driver (*.xls)};DBQ=" + url + ";ReadOnly=0";//url为EXCEL的绝对路径
OdbcConnection conn = new OdbcConnection(str);
conn.Open();
2). 获得所有的工作表名
DataTable dt = conn.GetSchema("Tables");
string excelSheets = "";
foreach (DataRow row in dt.Rows)
{
if (row["TABLE_TYPE"].ToString() == "SYSTEM TABLE")
{
excelSheets += "|" + row["TABLE_NAME"].ToString();
}
}
string[] _tableNames = excelSheets.Substring(1).Split('|');
3). 获得数据
OdbcCommand comm = new OdbcCommand("select * from [" + TableName+ "]", conn); //Tablel为EXCEL的工作表名
OdbcDataAdapter oda = new OdbcDataAdapter(comm);
DataSet ds = new DataSet();
oda.Fill(ds);
DataTable ExcelData = ds.Tables[0];
这两个方法其实大同小异,区别只是在于连接字符串的不同和组织架构里面对TableName的定义不一样而已,个人觉得使用ODBC的方法在获得工作表名称上面比Microsoft Jet 数据库引擎要更加准切一点,当然本人还是菜鸟一个,有写的不对或者说得不对的地方欢迎大家斧正,如果有新的方法也请大家能够不要吝啬,拿出来跟大家分享!
相关文章推荐
- C# 连接sql数据库对 access,excel导入导出操作 一、SQL SERVER 和ACCESS的数据导入导出
- c# .Net :Excel NPOI导入导出操作教程之数据库表信息数据导出到一个Excel文件并写到磁盘示例分享
- C#操作Excel----Excel数据的导入导…
- c# .Net :Excel NPOI导入导出操作教程之List集合的数据写到一个Excel文件并导出
- C#操作Excel数据导入和dataGridView重绘
- C# Excel 相关导入导出操作
- C#将EXCEL数据导入到数据库示例
- C#操作EXCEL导出数据报表的类
- C#操作Excel(导入导出)- -
- C#操作Excel数据增删改查示例
- C# 操作EXCEL 类 可以实现导入导出功能 折腾了好长时间 现在两种方法显示出来
- C#.net 数据操作--excel 操作类
- c#实现excel数据高效导入到sql数据库
- C#导入导出(excel)数据
- C#读取Excel数据操作大全
- [转载]利用SQL Server的DTS操作EXCEL、Access等数据表的导入导出
- DataGrid中的数据导入到Word和Excel_C#
- C#使用oledb方式将excel数据导入到datagridview后数据被截断为 255 个字符
- C#操作Excel中的数据进行计算
- C#操作Excel,将DataGridView数据导出到Excel中