2015-12-01 8 views
-1

У меня есть требование кЧтение Excel файлов без использования COM Interop

файлов Чтение Excel без использования COM-взаимодействия.

Найдено несколько возможных способов сделать то же самое.

Я использовал метод openxml для чтения файлов .XLSX, которые не будут работать .XLS-файлы. Так что планировалось использовать чтение ольда только для файлов .XLS.

Позже я прочитал несколько статей о проблемах, связанных с движком базы данных Jet при чтении файла Excel, Библиотека Jet не была разработана для 64-битной системы и всех.

Я разрабатываю приложение на 64-битном компьютере и нуждаюсь в развертывании на 32-битных серверах. Будут ли возникать проблемы позже?

И можно ли использовать файл Microsoft.ACE.OLEDB.12.0 для чтения файлов .XLS?

private string GetConnectionString(string filepath) 
     { 
      Dictionary<string, string> props = new Dictionary<string, string>(); 

      // XLSX - Excel 2007, 2010, 2012, 2013 
      props["Provider"] = "Microsoft.ACE.OLEDB.12.0;"; 
      props["Extended Properties"] = "Excel 12.0 XML";    
      //props["Data Source"] ="h:\\A_TestOpenXML.xlsx"; 
      props["Data Source"] = "h:\\Book1.xls"; 
//is it possible to use Microsoft.ACE.OLEDB.12.0 to read .XLS files also? 

      // XLS - Excel 2003 and Older 
      //props["Provider"] = "Microsoft.Jet.OLEDB.4.0"; 
      //props["Extended Properties"] = "Excel 8.0"; 
      //props["Data Source"] = "h:\\Book1.xls"; 

      StringBuilder sb = new StringBuilder(); 

      foreach (KeyValuePair<string, string> prop in props) 
      { 
       sb.Append(prop.Key); 
       sb.Append('='); 
       sb.Append(prop.Value); 
       sb.Append(';'); 
      } 

      return sb.ToString(); 
     } 

необходимо установить офис на сервере для использования Microsoft.ACE.OLEDB.12.0?

помогите пожалуйста.

+0

Драйверы ACE не поддерживаются в типичных серверных средах. [Страница загрузки MS Ace] (https://www.microsoft.com/en-us/download/details.aspx?id=13255). См. Раздел сведений на странице загрузки MS. –

ответ

2

Нет, на машине не требуется Office, если вы используете драйвер ACE для чтения файлов. Вам просто нужно установить драйвер на компьютеры, на которых будет запущено приложение.

Вы можете использовать драйвер ACE для чтения файлов .xlsx. Для файлов .xls вам необходимо использовать драйвер Microsoft.Jet.OLEDB.4.0 изменить: OP подтверждает, что драйвер ACE v12 также может читать файлы .xls.

Другой альтернативой для чтения файлов .xls без установки Excel на машине является использование NPOI, которое может читать/записывать файлы .XLS (двоичные) в .NET. Я использовал его в течение нескольких лет, и он работает очень хорошо (и не требует установки каких-либо дополнительных/в комплекте с вашим приложением).

+0

: Для работы с драйвером Microsoft.Jet.OLEDB.4.0 необходимо скомпилировать режим x86 правильно? с вышеуказанным кодом (Microsoft.ACE.OLEDB.12.0) я могу читать данные из Book1.xls. – Athul

+1

@ Атул. Тогда это здорово. В прошлый раз, когда я использовал драйвер ACE для чтения .xls, он не работал (не помните, какая версия была, но не v12, так что вам хорошо. Установите драйвер ACE на машины, на которых будет запущено ваше приложение, и праздновать! :) –