Прочитайте Excel, загруженный через FileUpload

У меня есть веб-приложение ASP.NET, в котором есть элемент управления загрузкой файлов, позволяющий пользователям загружать файл 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 ответ

Решение

Я подозреваю, что проблема кроется в обращении к Server.MapPath(fileupFile.FileName), FileName свойство является вспомогательным свойством для указания исходного имени файла содержимого, загружаемого на сервер. Он не обязательно указывает местоположение или имя файла, когда (и если) вы сохраняете его на сервере.

Казалось бы, вам все равно нужно получить файл на стороне сервера и сохранить его на диск. Есть несколько способов сделать это. SaveAs() метод, пожалуй, самый простой, но у вас также есть FileBytes а также FileContent свойства, которые дают вам доступ к загруженному файлу в виде байтового массива или потока, соответственно.

Если вы сначала сохраните документ на жестком диске, а затем создадите строку подключения, я думаю, что это решит проблему.

Вот простой пример сохранения загруженного файла. Предположим, что папке "~/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";
// ...

Удачи.

Кстати, и вы, возможно, уже знаете, есть отличная ссылка на свойства строки подключения Excel 2007 на сайте connectionstrings.com: http://connectionstrings.com/excel-2007

Другие вопросы по тегам