繁体   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