1

我有一个 ASP.NET Web 应用程序,它有一个文件上传控件,允许用户上传一个 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);
4

1 回答 1

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

于 2010-09-01T23:15:58.117 回答