阅读通过FileUpload上传的excel

我有一个ASP.NET Web应用程序,它有一个file upload控件,允许用户上传一个Excel文件供其阅读。

我使用的OleDBConnection,我觉得我的连接string或查询string是错误的,因为应用程序不断抛出OleDBExceptions在我身边(哎哟!)。 什么是保存或访问上传文件的好方法?

这是连接string:

olcon.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Server.MapPath(fileupFile.FileName) + ";Extended Properties=Excel 12.0"; 

请求参数:

 OleDbCommand olcmd = new OleDbCommand("SELECT * FROM [Sheet1$]", olcon); 

我怀疑这个问题是根植于对Server.MapPath(fileupFile.FileName)的调用。 FileName属性是一个方便的属性,用于指示正​​在上传到服务器的内容的原始文件名。 当(如果)将其保存在服务器上时,它不一定表示文件的位置或名称。

看起来您仍然需要在服务器端接收文件并将其保存到磁盘。 有几种方法可以做到这一点。 SaveAs()方法可能是最简单的,但是你也有FileBytesFileContent属性,它们分别允许你以字节数组或stream的方式访问上传的文件。

如果您首先将文档保存到您的硬盘,然后构build您的连接string,我相信这将解决问题。

这是保存上传文件的一个简单例子。 假定“〜/ Documents”文件夹已授予IIS工作进程写入权限(或者您使用模拟并且已通过身份validation的用户具有写入权限):

 var targetfilepath = Path.Combine(Server.MapPath(~/Documents), fileupFile.FileName); fileupFile.SaveAs(targetfilepath); var connstring = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + targetfilepath + ";Extended Properties=Excel 12.0"; // ... 

祝你好运。

顺便说一下,你可能已经知道,connectionstrings.com上的Excel 2007连接string属性有一个很好的参考: http : //connectionstrings.com/excel-2007