首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法创建Excel.Application对象

无法创建Excel.Application对象
EN

Stack Overflow用户
提问于 2015-05-18 11:45:15
回答 3查看 3.7K关注 0票数 2

在我的C#应用程序中,我将数据导入并导出到excel。我还有2013年的办公室。

我使用以下代码:

代码语言:javascript
复制
using Excel = Microsoft.Office.Interop.Excel;
Excel.Application _excelApp = null;
_excelApp = new Excel.Application();

这段代码运行良好,但最近我安装了2013,它还更新了office。在此之后,我得到了_excelApp =新的Excel.Application()中的错误;

错误是:

无法将'System.__ComObject‘类型的COM对象转换为接口类型'Microsoft.Office.Interop.Excel.Application’。此操作失败,因为对IID“{000208D5-0000-C000-000000000046}”接口的COM组件的QueryInterface调用由于以下错误而失败:错误加载类型库/DLL。(HRESULT除外: 0x80029C4A (TYPE_E_CANTLOADLIBRARY))。

EN

回答 3

Stack Overflow用户

发布于 2015-05-18 13:23:46

@Deepak,我不能发表评论,所以我把它放在这里。也许索纳是对的。我以前也有同样的问题,所以我决定使用旧的方式打开Excel文件(使用oledb命令)。

请问你需要什么?读Excel还是保存新的Excel?

例如,在我的例子中,我需要读取一个Excel (即和.xls或.xlsx):

代码语言:javascript
复制
               //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,这是在本文Create Excel (.XLS and .XLSX) file from C#中描述的。

票数 0
EN

Stack Overflow用户

发布于 2015-06-15 11:13:58

--这是创建对象的方法,从而将工作表从一个excel复制到另一个

Dim CopyFrom作为对象Dim CopyTo作为对象Dim CopyThis作为对象Dim xl

代码语言:javascript
复制
    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()
票数 0
EN

Stack Overflow用户

发布于 2015-10-16 08:35:50

问题已经解决了。当我安装微软项目专业2013,它也更新微软办公室,但升级的办公室是不成功的。

当我修理办公室的时候,它开始正常工作了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30302351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档