阅读通过FileUpload上传的excel

时间:2010-09-01 22:43:51

标签: asp.net excel file-upload connection-string oledbconnection

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

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

这是连接字符串:

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);

1 个答案:

答案 0 :(得分:0)

我怀疑问题源于对Server.MapPath(fileupFile.FileName)的调用。 FileName属性是一个便利属性,用于指示要上载到服务器的内容的原始文件名。它(并且如果)将其保存在服务器上时,不一定表示文件的位置或名称。

您似乎仍需要在服务器端接收文件并将其保存到磁盘。有几种方法可以做到这一点。 SaveAs()方法可能是最简单的方法,但您还拥有FileBytesFileContent属性,可以分别以字节数组或流的形式访问上传的文件。

如果您先将文档保存到硬盘驱动器然后构建连接字符串,我相信这样可以解决问题。

以下是保存上传文件的简单示例。假设“〜/ Documents”文件夹已授予IIS工作进程写入权限(或您使用模拟,并且经过身份验证的用户具有写入权限):

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连接字符串属性的出色参考:http://connectionstrings.com/excel-2007