2016-12-14 10 views
0

Я прочитал некоторые другие темы об этой теме, но он до сих пор не работает, и я не знаю почему.C# получить листы excel без офиса без OLEDB

Исключено: «Microsoft.ACE.OLEDB.12.0'-Провайдер не зарегистрирован на локальном компьютере. Я уже установил механизм базы данных для Office 2007 и 2010.

У вас есть идеи?

ОС: Win 7 Prof. 64 бит

static void Main(string[] args) 
     { 
      OleDbConnection connection = null; 
      DataTable Sheets = null; 

      String file = args[0]; 
      String filePath = Path.GetDirectoryName(args[0]); 
      String connPath = ""; 

      if(Path.GetExtension(file).Equals(".xls")) 
       connPath = "Provider=Microsoft.Jet.OleDb.4.0; Data Source=" + file + ";Extended Properties=Excel 8.0"; 
      else 
       connPath = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + file + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=1\""; 

      try 
      { 
       connection = new OleDbConnection(connPath); 
       connection.Open(); 

      Sheets = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); 

...

ответ

0

Нашел. Вам нужно усложнить проект для процессора x86. Любой процессор не работает.

Благодаря

+0

Это не является прямым ответом на ваш вопрос, но как вы можете видеть, используя OLEDB имеет много ограничений. Если вам нужен полный контроль над офисными файлами (без офиса), вы можете посмотреть на openxml sdk: https://msdn.microsoft.com/en-us/library/office/bb448854.aspx?f=255&MSPPError=- 2147217396 –