Я подозреваю, что проблема связана с вызовом 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