web下读取EXCEL文件,用OLEDB出现未指定的错误,用ODBC出现磁盘或网络错误
2008-04-21 22:32
387 查看
问题1 语句如下:
/////////////////////////////////////////////
Dim DS As System.Data.DataSet
Dim MyCommand As System.Data.OleDb.OleDbDataAdapter
Dim MyConnection As System.Data.OleDb.OleDbConnection
MyConnection = New System.Data.OleDb.OleDbConnection( _
"provider=Microsoft.Jet.OLEDB.4.0; " & _
"data source=D:/HRWeb/JBF/UpLoad/TEMP.XLS; " & _
"Extended Properties=Excel 8.0;")
MyCommand = New System.Data.OleDb.OleDbDataAdapter( _
"select * from [Sheet1$]", MyConnection)
DS = New System.Data.DataSet
MyCommand.Fill(DS)
MyCommand.Dispose()
MyConnection.Close()
MyConnection.Dispose()
*************出现如下错误************
“/JBF”应用程序中的服务器错误。
--------------------------------------------------------------------------------
未指定的错误
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Data.OleDb.OleDbException: 未指定的错误
------------------------------------------
问题2
目的和问题1是一样的 在ODBC里建了一个系统DSN: MyExcelOpen 用 Microsoft Excel Driver (*.xls)
在 设计环境是如果用 ODBC数据控件,是可以预览的到数据的,但在 执行时还是会出错
语句如下:
Dim MyOdbcConnection As New System.Data.Odbc.OdbcConnection
Dim MyOdbcSelectCommand As New System.Data.Odbc.OdbcCommand
Dim MyOdbcDataAdapter As New System.Data.Odbc.OdbcDataAdapter
Dim myExcelDataTable As New System.Data.DataTable
CType(myExcelDataTable, System.ComponentModel.ISupportInitialize).BeginInit()
MyOdbcConnection.ConnectionString = "PageTimeout=5;FIL=excel 8.0;" & _
"MaxBufferSize=2048;DSN=MyExcelOpen;" & _
"DefaultDir=D:/HRWeb/JBF/UpLoad;" & _
"DBQ=D:/HRWeb/JBF/UpLoad/temp.xls;" & _
"DriverId=790"
MyOdbcSelectCommand.CommandText = "select * from [Sheet1$]"
MyOdbcSelectCommand.Connection = MyOdbcConnection
MyOdbcDataAdapter.SelectCommand = MyOdbcSelectCommand
MyOdbcDataAdapter.Fill(myExcelDataTable)
'关闭环境
MyOdbcSelectCommand.Dispose()
MyOdbcDataAdapter.Dispose()
MyOdbcConnection.Close()
MyOdbcConnection.Dispose()
*************出现如下错误************
“/JBF”应用程序中的服务器错误。
--------------------------------------------------------------------------------
ERROR [HY000] [Microsoft][ODBC Excel Driver] 磁盘或网络错误。 ERROR [IM006] [Microsoft][ODBC 驱动程序管理器] 驱动程序的 SQLSetConnectAttr 失败 ERROR [HY000] [Microsoft][ODBC Excel Driver] 磁盘或网络错误。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Data.Odbc.OdbcException: ERROR [HY000] [Microsoft][ODBC Excel Driver] 磁盘或网络错误。 ERROR [IM006] [Microsoft][ODBC 驱动程序管理器] 驱动程序的 SQLSetConnectAttr 失败 ERROR [HY000] [Microsoft][ODBC Excel Driver] 磁盘或网络错误。
**************************************************************************
上述错误都是在 fill 这句时出现的
不知道是不是在IIS设置方面的问题 还是 权限方面 的问题
搜遍贴子,还是没有找到解决办法。
1 楼baso1623(baso)回复于 2005-08-02 14:04:02 得分 0
如果ODBC将链接语句换成
Driver={Microsoft Excel Driver (*.xls)};DriverId=790;Dbq=C:/MyExcel.xls;DefaultDir=c:/mypath
odbc下的错误变成这样
ERROR [HY000] [Microsoft][ODBC Excel Driver]常见错误 不能打开注册表关键字 'Temporary (volatile) Jet DSN for process 0x940 Thread 0x180 DBC 0x5f65f14 Excel'。 ERROR [IM006] [Microsoft][ODBC 驱动程序管理器] 驱动程序的 SQLSetConnectAttr 失败 ERROR [HY000] [Microsoft][ODBC Excel Driver]常见错误 不能打开注册表关键字 'Temporary (volatile) Jet DSN for process 0x940 Thread 0x180 DBC 0x5f65f14 Excel'。 ERROR [HY000] [Microsoft][ODBC Excel Driver] 磁盘或网络错误。 ERROR [HY000] [Microsoft][ODBC Excel Driver]常见错误 不能打开注册表关键字 'Temporary (volatile) Jet DSN for process 0x940 Thread 0x180 DBC 0x5f65f14 Excel'。 ERROR [HY000] [Microsoft][ODBC Excel Driver]常见错误 不能打开注册表关键字 'Temporary (volatile) Jet DSN for process 0x940 Thread 0x180 DBC 0x5f65f14 Excel'。 ERROR [HY000] [Microsoft][ODBC Excel Driver] 磁盘或网络错误。
Top
OLEDB连接字符MSDN帮助里也有的
在线等......
Top
你的web有没有权限访问D:/HRWeb/JBF/UpLoad/TEMP.XLS ?
连接一般用相对路径,用server.mappath()转换一下成绝对路径,本来对web不是很了解,本子上又没有装IIS,没法测试,你把Temp.xls换到你的虚拟目录下试试看
Top
d:/hwweb/jbf
就是一个 虚拟目录 upload 有设置了权限了
在资源管理器 的目录 里添加 来宾用户可访问 在 IIS里 UPLOAD可以匿名访问
Top
Top
权限在哪里设置呀!!!!!!!
DCOMCNFG里 Microsoft Excel 应用程序里也设置了呀!!!Top
D:/HRWeb/JBF/Upload
支持上传的呀,客户端可以把文件写到这个目录,那应该是有权限的呀Top
1、在代码打开时间内,此文件是否被打开(比如打开查看它)
2、在代码打开之前,有无其他代码打开此文件而对象未关闭?
3、你的MDAC 太低
4、如果上述处理方法均不能,没有办法了,请重新安装系统。Top
2、在将这个文件夹指定为IIS里面的匿名访问用户可以访问(就是那个IUSER_Machine的用户)。
因为JET在启动的时候会创建一个mdb(或xls)的复本,它首先将这个复本通过检索环境变量中的TMP和(或)TEMP来创建在他们指定的目录下面,如果没有这两个环境变量,这个临时文件将被创建在WinNt(操作系统的目录)下面,通常这个目录是没有对IUSER_用户开放的。Top
但我觉得问题不这么简单,很可能是数据提供者的问题,如果你的odbc版本不符合vs.net的需要,数据访问会出类似的问题,可以下载个新版本支持dotnet的odbc驱动看看。Top
另外可以参考下: http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cpref/html/frlrfsystemdataodbcodbcexceptionclasstopic.asp 与 http://support.microsoft.com/default.aspx?scid=kb;zh-cn;821958 href="http://topic.csdn.net/t/20050802/13/4183444.html#" target=_blank>Top
在 WEB.CONFIG 里 我为了能够在 WEB上使用 EXCEL.APPLICATION
加了一句
identity impersonate="true"
把这一句删除掉,一切OK......
高兴啊,结贴喽!!!!Top
这个方法非常有效
/////////////////////////////////////////////
Dim DS As System.Data.DataSet
Dim MyCommand As System.Data.OleDb.OleDbDataAdapter
Dim MyConnection As System.Data.OleDb.OleDbConnection
MyConnection = New System.Data.OleDb.OleDbConnection( _
"provider=Microsoft.Jet.OLEDB.4.0; " & _
"data source=D:/HRWeb/JBF/UpLoad/TEMP.XLS; " & _
"Extended Properties=Excel 8.0;")
MyCommand = New System.Data.OleDb.OleDbDataAdapter( _
"select * from [Sheet1$]", MyConnection)
DS = New System.Data.DataSet
MyCommand.Fill(DS)
MyCommand.Dispose()
MyConnection.Close()
MyConnection.Dispose()
*************出现如下错误************
“/JBF”应用程序中的服务器错误。
--------------------------------------------------------------------------------
未指定的错误
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Data.OleDb.OleDbException: 未指定的错误
------------------------------------------
问题2
目的和问题1是一样的 在ODBC里建了一个系统DSN: MyExcelOpen 用 Microsoft Excel Driver (*.xls)
在 设计环境是如果用 ODBC数据控件,是可以预览的到数据的,但在 执行时还是会出错
语句如下:
Dim MyOdbcConnection As New System.Data.Odbc.OdbcConnection
Dim MyOdbcSelectCommand As New System.Data.Odbc.OdbcCommand
Dim MyOdbcDataAdapter As New System.Data.Odbc.OdbcDataAdapter
Dim myExcelDataTable As New System.Data.DataTable
CType(myExcelDataTable, System.ComponentModel.ISupportInitialize).BeginInit()
MyOdbcConnection.ConnectionString = "PageTimeout=5;FIL=excel 8.0;" & _
"MaxBufferSize=2048;DSN=MyExcelOpen;" & _
"DefaultDir=D:/HRWeb/JBF/UpLoad;" & _
"DBQ=D:/HRWeb/JBF/UpLoad/temp.xls;" & _
"DriverId=790"
MyOdbcSelectCommand.CommandText = "select * from [Sheet1$]"
MyOdbcSelectCommand.Connection = MyOdbcConnection
MyOdbcDataAdapter.SelectCommand = MyOdbcSelectCommand
MyOdbcDataAdapter.Fill(myExcelDataTable)
'关闭环境
MyOdbcSelectCommand.Dispose()
MyOdbcDataAdapter.Dispose()
MyOdbcConnection.Close()
MyOdbcConnection.Dispose()
*************出现如下错误************
“/JBF”应用程序中的服务器错误。
--------------------------------------------------------------------------------
ERROR [HY000] [Microsoft][ODBC Excel Driver] 磁盘或网络错误。 ERROR [IM006] [Microsoft][ODBC 驱动程序管理器] 驱动程序的 SQLSetConnectAttr 失败 ERROR [HY000] [Microsoft][ODBC Excel Driver] 磁盘或网络错误。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Data.Odbc.OdbcException: ERROR [HY000] [Microsoft][ODBC Excel Driver] 磁盘或网络错误。 ERROR [IM006] [Microsoft][ODBC 驱动程序管理器] 驱动程序的 SQLSetConnectAttr 失败 ERROR [HY000] [Microsoft][ODBC Excel Driver] 磁盘或网络错误。
**************************************************************************
上述错误都是在 fill 这句时出现的
不知道是不是在IIS设置方面的问题 还是 权限方面 的问题
搜遍贴子,还是没有找到解决办法。
1 楼baso1623(baso)回复于 2005-08-02 14:04:02 得分 0
如果ODBC将链接语句换成
Driver={Microsoft Excel Driver (*.xls)};DriverId=790;Dbq=C:/MyExcel.xls;DefaultDir=c:/mypath
odbc下的错误变成这样
ERROR [HY000] [Microsoft][ODBC Excel Driver]常见错误 不能打开注册表关键字 'Temporary (volatile) Jet DSN for process 0x940 Thread 0x180 DBC 0x5f65f14 Excel'。 ERROR [IM006] [Microsoft][ODBC 驱动程序管理器] 驱动程序的 SQLSetConnectAttr 失败 ERROR [HY000] [Microsoft][ODBC Excel Driver]常见错误 不能打开注册表关键字 'Temporary (volatile) Jet DSN for process 0x940 Thread 0x180 DBC 0x5f65f14 Excel'。 ERROR [HY000] [Microsoft][ODBC Excel Driver] 磁盘或网络错误。 ERROR [HY000] [Microsoft][ODBC Excel Driver]常见错误 不能打开注册表关键字 'Temporary (volatile) Jet DSN for process 0x940 Thread 0x180 DBC 0x5f65f14 Excel'。 ERROR [HY000] [Microsoft][ODBC Excel Driver]常见错误 不能打开注册表关键字 'Temporary (volatile) Jet DSN for process 0x940 Thread 0x180 DBC 0x5f65f14 Excel'。 ERROR [HY000] [Microsoft][ODBC Excel Driver] 磁盘或网络错误。
Top
2 楼hamadou(闵峰--为了理想而奋斗)回复于 2005-08-02 15:08:03 得分 5
http://www.connectionstrings.com/Top3 楼baso1623(baso)回复于 2005-08-02 15:37:49 得分 0
OLEDB、ODBC链接字符串我就是按 这个的呀 http://www.connectionstrings.com/OLEDB连接字符MSDN帮助里也有的
在线等......
Top
4 楼AntingZ(夕惕若)回复于 2005-08-02 16:08:48 得分 5
估计是连接字符串中data source=D:/HRWeb/JBF/UpLoad/TEMP.XLS;使用的路径的问题你的web有没有权限访问D:/HRWeb/JBF/UpLoad/TEMP.XLS ?
连接一般用相对路径,用server.mappath()转换一下成绝对路径,本来对web不是很了解,本子上又没有装IIS,没法测试,你把Temp.xls换到你的虚拟目录下试试看
Top
5 楼baso1623(baso)回复于 2005-08-02 17:15:13 得分 0
有权限呀d:/hwweb/jbf
就是一个 虚拟目录 upload 有设置了权限了
在资源管理器 的目录 里添加 来宾用户可访问 在 IIS里 UPLOAD可以匿名访问
Top
6 楼baso1623(baso)回复于 2005-08-02 20:14:43 得分 0
没有人呀Top7 楼baso1623(baso)回复于 2005-08-03 08:42:27 得分 0
而且 这个目录 D:/HRWeb/JBF/UpLoad 是支持 匿名上传 的目录,测试成功的呀!Top
8 楼xu770(我爱鱼儿)回复于 2005-08-03 08:48:26 得分 5
要.net的帐户有权限Top9 楼baso1623(baso)回复于 2005-08-03 10:15:34 得分 0
.net的帐户 应该是 ASP.NET用户吧权限在哪里设置呀!!!!!!!
DCOMCNFG里 Microsoft Excel 应用程序里也设置了呀!!!Top
10 楼fphuang(人在哈尔滨·四月)回复于 2005-08-03 14:29:50 得分 5
文件夹有件--属性--安全--添加aspnet完全权限Top11 楼baso1623(baso)回复于 2005-08-03 15:01:22 得分 0
aspnet 是有权限的呀D:/HRWeb/JBF/Upload
支持上传的呀,客户端可以把文件写到这个目录,那应该是有权限的呀Top
12 楼baso1623(baso)回复于 2005-08-03 23:22:59 得分 0
对 CSDN 实在是越来越望了 :(Top13 楼hchxxzx(NET?摸到一点门槛)回复于 2005-08-03 23:37:30 得分 10
此问题你可查:1、在代码打开时间内,此文件是否被打开(比如打开查看它)
2、在代码打开之前,有无其他代码打开此文件而对象未关闭?
3、你的MDAC 太低
4、如果上述处理方法均不能,没有办法了,请重新安装系统。Top
14 楼cuike519(I will be back!)回复于 2005-08-04 06:38:33 得分 10
1、在环境变量中创建TMP或者TEMP,并指向一个已经存在的目录。2、在将这个文件夹指定为IIS里面的匿名访问用户可以访问(就是那个IUSER_Machine的用户)。
因为JET在启动的时候会创建一个mdb(或xls)的复本,它首先将这个复本通过检索环境变量中的TMP和(或)TEMP来创建在他们指定的目录下面,如果没有这两个环境变量,这个临时文件将被创建在WinNt(操作系统的目录)下面,通常这个目录是没有对IUSER_用户开放的。Top
15 楼zeusvenus()回复于 2005-08-04 07:27:21 得分 10
如果是上面说的权限问题,楼主可以在你数据所在文件及其文件夹赋予ASPNET和VSDEVELOPER可以读写的权限,在iis里设置匿名用户可以访问。但我觉得问题不这么简单,很可能是数据提供者的问题,如果你的odbc版本不符合vs.net的需要,数据访问会出类似的问题,可以下载个新版本支持dotnet的odbc驱动看看。Top
16 楼zeusvenus()回复于 2005-08-04 07:30:42 得分 0
很可能是odbc驱动版本太低,重装个高版本的mdac试试。另外可以参考下: http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cpref/html/frlrfsystemdataodbcodbcexceptionclasstopic.asp 与 http://support.microsoft.com/default.aspx?scid=kb;zh-cn;821958 href="http://topic.csdn.net/t/20050802/13/4183444.html#" target=_blank>Top
17 楼baso1623(baso)回复于 2005-08-04 09:14:32 得分 0
问题终于解决啦!!!!在 WEB.CONFIG 里 我为了能够在 WEB上使用 EXCEL.APPLICATION
加了一句
identity impersonate="true"
把这一句删除掉,一切OK......
高兴啊,结贴喽!!!!Top
这个方法非常有效
18 楼AntingZ(夕惕若)回复于 2005-08-04 23:41:22 得分 0
原来是这样Top19 楼baso1623(baso)回复于 2005-08-05 19:19:47 得分 0
算是经验共享相关文章推荐
- IIS oledb jet 4.0 读取excel 时,出现未指定错误 解决方法 !
- C# OleDb读取Excel文件 避免出现 科学计数法
- 偶尔出现 指定 网络名不再可用 错误提示 MS-SQL Server 基础类(尤其是在文件下载时)
- C# OleDb读取Excel文件 避免出现 科学计数法 的列
- 解决打开WEB ADI的excel文件时出现Run-time error '1004' 的错误
- 关于MFC读取excel文件后退出程序后出现dispatch错误的解决方法
- asp.net 上传Excel文件时出现: Microsoft JET Database Engine 未指定的错误
- 如何处理Oledb中EXCEL驱动读取EXCEL文件中字段长度大于255字符时出现的"数据截断"问题.
- 如何处理ODBC中EXCEL驱动读取EXCEL文件中字段长度大于255字符时出现的"数据截断"问题.
- C# 用数据库读取Excel出现“定义了过多字段”错误的解决方法
- 通过PHPExcel导出Excel文件时,出现“格式与文件扩展名格式不一致”错误!
- 关于WEB程序读取本地EXCEL文件的思维误区
- 使用Excel时出现System.Data.OleDb.OleDbException: 找不到可安装的 ISAM错误。
- vs2012运行webserver时出现错误提示: 创建在“system.net/defaultProxy”配置节中指定的 Web 代理时出错。
- Blend "无法启动”http://localhost:xxxx/Default.html“出现以下错误System.ComponentModel.Win32Exception(0x80004005):系统找不到指定文件
- 错误 103 未能加载文件或程序集“Telerik.Web.UI”或它的某一个依赖项。磁盘空间不足。 (异常来自 HRESULT:0x80070070)
- java读取excel文件并复制(copy)文件到指定目录示例
- SQL Server 2008 引入 Excel 时出现 Microsoft.ACE.OLEDB 错误的解决
- 从txt文件逐行读取数据到excel文件(包含POI的简单使用和excel文件的数据分列,出现次数统计)
- Java读取指定文件下的文件名到Excel中