win7下C#读取Excel2007,总是报错: 检索 COM 类工厂中 CLSID 为 00024500-0000-0000-C000-000000000046
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了win7下C#读取Excel2007,总是报错: 检索 COM 类工厂中 CLSID 为 00024500-0000-0000-C000-000000000046相关的知识,希望对你有一定的参考价值。
权限导致的问题,如果你能做主的话,那么在webconfig中加入以下标记
<identity impersonate="true" userName="??" password="???" />模拟管理员登陆应该就好了 参考技术A 就 参考技术B 说的是那个webconfig?
c#读取过来的excel路径不对
代码是这样的,就是读取出来的路径一直是有个报错的C盘的路径,我把东西调到那里就执行成功了,其他路径下都不行
string connStr = "";
string fileType = System.IO.Path.GetExtension(filename);
if (string.IsNullOrEmpty(fileType)) return null;
if (fileType == ".xls")
connStr = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + filename + ";" + ";Extended Properties=\"Excel 8.0;HDR=YES;IMEX=1\"";
else
connStr = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + filename + ";" + ";Extended Properties=\"Excel 12.0;HDR=YES;IMEX=1\"";
string sql_F = "Select * FROM [Sheet1$]";
OleDbConnection conn = null;
OleDbDataAdapter da = null;
System.Data.DataTable dtSheetName = null;
System.Data.DataTable dt = new System.Data.DataTable();
try
// 初始化连接,并打开
conn = new OleDbConnection(connStr);
conn.Open();
// 获取数据源的表定义元数据
string SheetName = "";
dtSheetName = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] null, null, null, "TABLE" );
// 初始化适配器
da = new OleDbDataAdapter();
for (int i = 0; i < dtSheetName.Rows.Count; i++)
SheetName = (string)dtSheetName.Rows[i]["TABLE_NAME"];
if (SheetName.Contains("$") && !SheetName.Replace("'", "").EndsWith("$"))
continue;
da.SelectCommand = new OleDbCommand(String.Format(sql_F, SheetName), conn);
da.Fill(dt);
catch (Exception ex)
finally
// 关闭连接
if (conn.State == ConnectionState.Open)
conn.Close();
da.Dispose();
conn.Dispose();
return dt;
然后打开这个excel文件,就跟读取一个二维表一样容易。具体代码就不写了
百度一搜一大堆。 参考技术D 你用绝对路径或者知道fileupload试一下
以上是关于win7下C#读取Excel2007,总是报错: 检索 COM 类工厂中 CLSID 为 00024500-0000-0000-C000-000000000046的主要内容,如果未能解决你的问题,请参考以下文章