我不能够从Excel文件读取和存储到数据库使用asp.net在C#中?

我正在这样做:

private bool writetoven(string xlspath) { OleDbConnection excelConnection = new OleDbConnection(excelConnectionString) try { OleDbCommand ocmd = new OleDbCommand("select * from [Sheet1$]", excelConnection); excelConnection.Open(); OleDbDataReader odr = ocmd.ExecuteReader(); string vcode = ""; string pswd = ""; string vname = ""; while (odr.Read()) { vcode = valid(odr, 0); pswd = valid(odr, 1); vname = valid(odr, 2); insertdataintosql(vcode,pswd,vname); } excelConnection.Close(); return true; } catch (DataException) { return false; } finally { lblmsg4.Text = "Data Inserted Sucessfully"; } } 

和我的连接string是这样的:

 excelConnectionString = "provider=Microsoft.jet.oledb.4.0;data source=" + filepath1 + ";extended properties='Excel 8.0;HDR=YES;'"; 

但我得到一个错误

Microsoft Jet数据库引擎无法打开文件“”。 它已经由另一个用户专门打开,或者您需要查看其数据的权限。

行1574年:OleDbConnection excelConnection =新的OleDbConnection(excelConnectionString);
1575行:
行1576:excelConnection.Open();
1577行:
1578行:

似乎文件仍然是开放的,但它没有,我已经检查了运行过程,而不是在那里

现在我该怎么办? …我的Excel工作表被closures,但我得到这个错误

我没有微软访问我的COM是可以是一个问题

是这个问题是用我的file upload控件,我正在使用?

确保您的Web应用程序正在运行的帐户对文件具有权限。

此外,由于您不使用path,只是一个文件名,它可能不会find它所在的文件。 文件位于相对于您的Web应用程序的位置?

System.IO.File.ReadAllBytes(filepath1)是成功还是失败?

既然你正在处理file upload:

用户通过浏览器从他们的计算机上传文件,然后在文件回复中将文件传输到服务器。 请参阅: http : //blog.divergencehosting.com/2009/03/12/upload-read-parse-file-aspnet/

即使你有完整的path,你也无法从服务器访问用户计算机上的文件。 浏览器在uploadControl.PostedFile.InputStream;向您发送一个文件的uploadControl.PostedFile.InputStream; 其中uploadControl是你的asp:FileUpload控件的名称。

然后,您需要将此stream保存到服务器上的文件位置,并将此完整path提供给连接string。

如果您使用类似EPPlus的文件来读取文件而不是OleDbConnection,则可以使用内存中的stream而不是先保存文件。

那么,错误说:

无法打开文件“”。

所以它几乎就像你的Excel连接string是无效的 – 它没有一个有效的Excel文件名!

何时何地设置 Excel连接string?

你在那个时候使用的filepath1是否有效?

它是否包含有效的Excel文件名?

更新:为什么我不明白的是:你正在传递xlspath作为你的方法的参数 – 但是,你似乎并没有在任何地方使用该xlspath – 绝对不是连接在一起你的excelConnectionString ….

 private bool writetoven(string xlspath) { OleDbConnection excelConnection = new OleDbConnection(excelConnectionString) 

你可以在这一行上放一个断点 – 你创build连接之前,你的excelConnectionString什么样的? 难道是xlspath包含vendor.xls – 但你的Excel连接string甚至从来没有被设置为该值?

您的Excel文件在Microsoft Excel中打开。 closuresExcel窗口,一切都会好的。