读取Excel中的数据存到数据库,但在读的时候报错 找不到可安装的 ISAM,这个错在本地调试时没有出现,但上传到服务器的时候就出现了,我的机器是XP的系统,服务器是2003的服务器。在网上找了很多解决方法,包括修改连接字符串和注册Excel组件,但都无效。现在将错误贴出来,希望有高手来帮忙解决,谢谢
“/fwadmin”应用程序中的服务器错误。
--------------------------------------------------------------------------------
找不到可安装的 ISAM。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Data.OleDb.OleDbException: 找不到可安装的 ISAM。
源错误:
行 84: DataSet ds = new DataSet();
行 85:
行 86: sda.Fill(ds);
行 87: flag = true;
行 88:
源文件: d:\Webroot\lms_deqing\fwadmin\Manager\Module\FrameWork\SystemApp\ExamManager\paper_manage\excel_up.aspx.cs 行: 86
堆栈跟踪:
[OleDbException (0x80004005): 找不到可安装的 ISAM。]
System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection) +969373
System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject) +86
System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup) +29
System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) +4863644
System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) +117
System.Data.OleDb.OleDbConnection.Open() +40
System.Data.Common.DbDataAdapter.QuietOpen(IDbConnection connection, ConnectionState& originalState) +31
System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +112
System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +287
System.Data.Common.DbDataAdapter.Fill(DataSet dataSet) +94
excel_up.GetExcelData(String filePath, String& info) in d:\Webroot\lms_deqing\fwadmin\Manager\Module\FrameWork\SystemApp\ExamManager\paper_manage\excel_up.aspx.cs:86
excel_up.AddExcelPaperData(String filePath, String PAPER_ID, String CONTENT_TYPE, String AUTHOR_NAME, String& info) in d:\Webroot\lms_deqing\fwadmin\Manager\Module\FrameWork\SystemApp\ExamManager\paper_manage\excel_up.aspx.cs:109
excel_up.btnUp_Click(Object sender, EventArgs e) in d:\Webroot\lms_deqing\fwadmin\Manager\Module\FrameWork\SystemApp\ExamManager\paper_manage\excel_up.aspx.cs:52
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +111
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +110
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565
也许还有人怀疑我的连接字符串,现在也贴出来,大家看下
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+filePath+";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'";
这个问题也拖了较长时间了,提供几个思路参考:
1、比较服务器上与本地机器的网站环境,如IIS中网站和上传文件的路径有没有空格。如果有空格,可能会造成连接串被分割。
另外,注意到你的网站路径较长,可以换个短的试试 如c:\testweb\
2、最全的连接串就在这儿了,你可以多试试。http://www.connectionstrings.com/excel
3、服务器的数据库是什么版本?有没有装office组件?注意版本。8.0应该包括97,2000,2003;12.0对应07
可以尝试在sql server 中手工导入excel,看看有没有错。
4、在服务器上调试。或者直接用本地程序连接服务器数据库调试。
首先参考 http://www.connectionstrings.com/ 这个看看连接串行吗 http://www.cnblogs.com/zyc2/archive/2008/10/21/182492.html
是否文件路径的问题,服务器上是否有权限操作这个路径或者路径包含了中文或空格什么的