2016-12-14 46 views
0

我读了一些关于这个主题的其他线程,但它仍然dosn't工作,我不知道为什么。C#获取excel工作表没有办公室unsing OLEDB

有一个例外:'Microsoft.ACE.OLEDB.12.0'-Provider未在本地机器上注册。我已经安装了Office 2007和2010的数据库引擎。

您有什么想法吗?

OS:Win 7的教授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 CPU的项目。任何CPU都不行。

谢谢

+0

这不是直接回答你的问题,但正如你所看到的,使用OLEDB有很多限制。如果你想完全控制办公室文件(没有办公室),你可能想看看openxml sdk:https://msdn.microsoft.com/en-us/library/office/bb448854.aspx?f=255&MSPPError=- 2147217396 –

相关问题