Paramu1973 Ответов: 4

Как читать данные файлов excel в WebForms-hosted?


Привет, у меня есть небольшой проект в VS2015 asp.net - c#, чтобы читать данные файла excel. Когда я запускаю его как localhost, он работает нормально. Но после того, как хостинг на FTP, это не работает, дает ошибку, как
"
The Microsoft Access database engine cannot open or write to the file ''. It is already opened exclusively by another user, or you need permission to view and write its data.

My Connection String - XLSX file

//String MyExcelFile = Server.MapPath(MyInput1.PostedFile.FileName); // Not Working
//String MyExcelFile = System.IO.Path.GetFullPath(Server.MapPath(MyInput1.PostedFile.FileName)); // Not Working

String MyExcelFile = MyInput1.PostedFile.FileName; // Working good in localhost
But giving error after published to ftp...........??????

String StrConn2 = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + MyExcelFile + "; Extended Properties=\"Excel 12.0; HDR=YES; \"";

String MyExcelSheet = "[Sheet1$]";
String  MySQLSelect = "select * from " + MyExcelSheet;

Спасибо, что помогает !

Что я уже пробовал:

Чтение данных файла Excel с помощью Microsoft.Ace.Oledb. 12. 0

4 Ответов

Рейтинг:
5

Richard Deeming

Цитата:
//String MyExcelFile = Server.MapPath(MyInput1.PostedFile.FileName); // Not Working
//String MyExcelFile = System.IO.Path.GetFullPath(Server.MapPath(MyInput1.PostedFile.FileName)); // Not Working
String MyExcelFile = MyInput1.PostedFile.FileName; // Working good in localhost

То FileName свойство возвращает путь - а иногда и просто имя-файла на клиенте.

Ваш код работает на сервере. Он не имеет доступа к файловой системе клиента.

Оно появляется для работы при отладке в Visual Studio. Но это только потому, что в данном конкретном случае клиент и сервер совпадают.

У вас есть два варианта:
  1. Воспользуйся MyInput1.SaveAs(...) чтобы сохранить файл где-нибудь на сервере, а затем прочитать копию сервера. Вам нужно будет использовать случайное имя файла, так как несколько пользователей могут одновременно обращаться к вашему сайту, и вы не хотите, чтобы файл от одного пользователя перезаписывал файл от другого пользователя.
  2. Используйте библиотеку, которая позволяет читать файл из Stream, не сохраняя его на диск. Затем вы можете пройти внутрь MyInput1.FileContent, что дает вам доступ к необработанному содержимому загруженного файла.


Рейтинг:
33

BobbyStrain

Обычно для заполнения веб-формы данными из локального Excel или других локальных приложений используется клиентское приложение. Или записывает на сервер файл Excel для загрузки. Microsoft затрудняет работу с Excel с помощью автоматизации, даже локальной.


Рейтинг:
28

adriancs

Вы можете использовать ClosedXML в качестве альтернативы, которая более надежна, чем Microsoft.ACE.OLEDB.

URL-адрес проекта: https://github.com/ClosedXML/ClosedXML[^]


Рейтинг:
17

RickZeeland

Похоже, это хорошая библиотека: EPPlus это библиотека .net, которая читает и записывает файлы Excel 2007/2010 с использованием формата Open Office Xml (xlsx). EPPlus-создание расширенных электронных таблиц Excel на сервере-Главная страница[^]