簡體   English   中英

無法創建Excel.Application對象

[英]Not able to create object of Excel.Application

在我的C#應用​​程序中,我正在導入和導出數據到excel。 我有辦公室2013。

我正在使用以下代碼:

using Excel = Microsoft.Office.Interop.Excel;
Excel.Application _excelApp = null;
_excelApp = new Excel.Application();

該代碼工作正常,但最近我安裝了Microsoft Project Professional 2013,它還更新了Office。 之后,我在_excelApp = new Excel.Application();中出錯。

錯誤是:

無法將類型為“ System .__ ComObject”的COM對象轉換為接口類型為“ Microsoft.Office.Interop.Excel.Application”。 此操作失敗,因為對IID為“ {000208D5-0000-0000-C000-000000000046}”的接口的COM組件上的QueryInterface調用由於以下錯誤而失敗:加載類型庫/ DLL出錯。 (來自HRESULT的異常:0x80029C4A(TYPE_E_CANTLOADLIBRARY))。

@Deepak gupta,我無法發表評論,所以我在這里發布。 也許Soner是對的。 我曾經遇到過同樣的問題,所以我決定使用舊方法打開Excel文件(使用oledb命令)。

你需要什么? 閱讀Excel或保存一個新的Excel?

例如,在我的情況下,我需要讀取一個Excel(和.xls或.xlsx):

               //Check whether file extension is xls or xslx
            if (fileExtension == ".xls")
                connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileLocation + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2\"";
            else if (fileExtension == ".xlsx")
                connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileLocation + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=2\"";

            //Create OleDB Connection and OleDb Command            
            OleDbCommand cmd = new OleDbCommand();
            OleDbConnection con = new OleDbConnection(connectionString);

            cmd.CommandType = System.Data.CommandType.Text;
            cmd.Connection = con;

            OleDbDataAdapter dAdapter = new OleDbDataAdapter(cmd);
            con.Open();
            DataTable dtExcelSheetName = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
            string getExcelSheetName = dtExcelSheetName.Rows[0]["Table_Name"].ToString();

            //send query, send query, fill adapter:
            cmd.CommandText = "SELECT * FROM [" + getExcelSheetName + "A1:GR255] WHERE [0] IS NOT NULL ";
            dAdapter.SelectCommand = cmd;
            dAdapter.Fill(dtExcelRecords);
            con.Close();

或者,也許您可​​以嘗試使用此庫ExcelLibrary,這在本文中通過C#創建Excel(.XLS和.XLSX)文件中描述

這是創建對象並將工作表從一個Excel復制到另一個Excel的方法

Dim CopyFrom作為對象Dim CopyTo作為對象Dim CopyThis作為對象Dim xl作為對象

    xl = CreateObject("Excel.Application")
    xl.Visible = False
    CopyFrom = xl.Workbooks.Open("E:\EXCEL\From.xls")
    CopyTo = xl.Workbooks.Open("E:\EXCEL\To.xls")
    For i = 0 To 1
        ''To use a password: Workbooks.Open Filename:="Filename", Password:="Password"
        If i = 0 Then
            CopyThis = CopyFrom.Sheets(1)
            CopyThis.Copy(After:=CopyTo.Sheets(CopyTo.Sheets.Count))
            CopyTo.Sheets(3).Name = "Sheet3"
        Else
            CopyThis = CopyFrom.Sheets(2)
            CopyThis.Copy(After:=CopyTo.Sheets(CopyTo.Sheets.Count))
            CopyTo.Sheets(4).Name = "Sheet4"
        End If
    Next
    CopyTo.Sheets(1).Activate()
    CopyTo.Save()
    'CopyTo.SaveAs("E:\EXCEL\Check.xls")
    xl.Quit()

這個問題已經解決。 當我安裝Microsoft Project Professional 2013時,它也更新了Microsoft Office,但是Office更新沒有成功。

當我修理辦公室時,它開始正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM