阅读通过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()
方法可能是最简单的,但是你也有FileBytes
和FileContent
属性,它们分别允许你以字节数组或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
- Excel中的数据types评估到ASP.NET复制/粘贴操作
- asp.net检查一个来自Response.OutputStream的文件是否被保存/打开
- 同时写入数据到Excel我得到错误System.OutOfMemoryException
- 读取Excel:列名称被截断为前64个字符
- 来自HRESULTexception:0x80080005(CO_E_SERVER_EXEC_FAILURE)在c#中进行Excel应用程序
- 数据集导出为Excel,并在Excel中写入多个表
- 通过AJAX MVC下载Excel文件,而不用在ASP.Net/C#服务器上保存文件
- 将GridView导出到多个Excel工作表
- MS Access的OLEDBConnection Excel问题