#c# #asp.net #excel
#c# #asp.net #excel
Вопрос:
У меня есть требование выполнить некоторый импорт из таблицы Excel, и я просматривал различные примеры в Интернете, все они, похоже, используют драйвер «Jet», который несовместим с 64-разрядной версией.
Теперь я полностью осведомлен о доступных обходных путях (при изменении способа запуска IIS и т.д.), Однако я хотел бы знать, есть ли замена для драйвера «Jet», чтобы я мог читать и генерировать листы Excel из Asp.Net работает на 64-разрядном сервере без изменений IIS.
Ответ №1:
В прошлый раз, когда я исследовал, не было драйвера x64. Я использую это для открытия файлов xls. Это работает на 64-битных блоках, пока вы компилируете с использованием x86.
DataSet myDataset = new DataSet();
string strConn = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" filename @";Extended Properties=""Excel 12.0 Xml;HDR=YES""";
OleDbConnection myData = new OleDbConnection(strConn);
try {
myData.Open();
}
catch (OleDbException e) {
try {
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" "Data Source=" filename ";" "Extended Properties=Excel 8.0;HDR=YES;";
myData = new OleDbConnection(strConn);
myData.Open();
}
catch (Exception e2) {
strConn = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" filename @";Extended Properties=""HTML Import;HDR=YES;IMEX=1"";";
myData = new OleDbConnection(strConn);
myData.Open();
}
}
int i = 0;
foreach (DataRow row in myData.GetSchema("tables").Rows)
try {
i ;
string name = row[2].ToString().Replace("''", "'").TrimEnd('_');
DataSet ds = new DataSet();
OleDbDataAdapter d = new OleDbDataAdapter("SELECT * from [" name "]", strConn);
d.Fill(ds);
DataTable dt = ds.Tables[0].Copy();
dt.Namespace = name;
myDataset.Tables.Add(dt);
}
catch (Exception e) {
}
return myDataset;
Комментарии:
1. Если это веб-сайт и он не скомпилирован?
2. Веб-сайты все еще компилируются. Этот код будет работать в вашем asp.net приложение.
3. Я это понимаю. Расскажу вам, что заставит его раскрутиться и вернуться с проблемами.
4. Этот код работает, когда я экспортирую файл, и тот же файл, который я загружаю, как только я вношу некоторые изменения и сохраняю это, и снова пытаюсь импортировать, тогда код не работает, получая сообщение об ошибке при foreach not finding tables
Ответ №2:
Я сам использую его на 64-разрядном сервере с IIS 6.0, не самом простом в использовании, но он отлично работает (быстрый, надежный, не требует установки office на сервере и т.д.).
Ответ №3:
Вы уже думали о том, чтобы попробовать Open XML SDK?