如何如果未安装Excel中创建一个Excel的实例(How to create an instanc

2019-07-31 12:10发布

在我的C#应用​​程序,使用Excel互操作的dll的帮助(参考)我读/写Excel文件。 如果我这个程序移动到系统未安装/ Excel办公(认为清洁机),我与下面的错误击中。

System.Runtime.InteropServices.COMException(0x80040154的):从HRESULT 80040154类未注册(例外::具有CLSID {00024500-0000-0000-C000-000000000046}失败,由于以下错误检索COM类工厂组件0x80040154的(REGDB_E_CLASSNOTREG ))。

预计上述错误,因为没有Excel的目标机器上。
我的问题是,有没有除了使用我的程序,从目标机器上注册的Interop DLL任何其他方式?

Answer 1:

我的问题是,有没有除了使用我的程序,从目标机器上注册的Interop DLL任何其他方式?

你问,如果有任何的方式来使用你的程序,它使用的Excel互操作,当运行程序的计算机上没有安装Excel。 最简洁的答案是不。 较长的答案是肯定的,如果你愿意重构你的程序不能互操作使用。

您可以使用OOXML SDK ,如果你的目标的Excel版本是2007年了由微软提供。 您也可以使用第三方库,如阅读Aspose如果你愿意花的钱一点点。

使用SDK OOXML用于插入电子表格到Excel文件的一个例子可以在找到微软文档 。

// Given a document name, inserts a new worksheet.
public static void InsertWorksheet(string docName)
{
    // Open the document for editing.
    using (SpreadsheetDocument spreadSheet = SpreadsheetDocument.Open(docName, true))
    {
        // Add a blank WorksheetPart.
        WorksheetPart newWorksheetPart = spreadSheet.WorkbookPart.AddNewPart<WorksheetPart>();
        newWorksheetPart.Worksheet = new Worksheet(new SheetData());

        Sheets sheets = spreadSheet.WorkbookPart.Workbook.GetFirstChild<Sheets>();
        string relationshipId = spreadSheet.WorkbookPart.GetIdOfPart(newWorksheetPart);

        // Get a unique ID for the new worksheet.
        uint sheetId = 1;
        if (sheets.Elements<Sheet>().Count() > 0)
        {
            sheetId = sheets.Elements<Sheet>().Select(s => s.SheetId.Value).Max() + 1;
        }

        // Give the new worksheet a name.
        string sheetName = "Sheet" + sheetId;

        // Append the new worksheet and associate it with the workbook.
        Sheet sheet = new Sheet() { Id = relationshipId, SheetId = sheetId, Name = sheetName };
        sheets.Append(sheet);
    }
}


Answer 2:

即使微软不建议usein的服务器上互操作的库 。 所以,最好找一些替代的框架为你做的Excel。 我已经成功地使用NPOI在过去用于这一目的。

我知道这是不是一个回答您的例外。 但说实话,互操作性是一个无尽的烦恼和神秘异常消息的路径。

更新2017年 :我没有使用NPOI有一段时间了,搬到我的所有项目EPPlus insted的-库基础上创建您现代XLSX文件的OpenXML。



Answer 3:

你可以注册RegSrv32你的COM

链接: http://msdn.microsoft.com/en-us/library/ms859484.aspx

你有义务使用之前注册COM



Answer 4:

从所有的研究,我做了,而以前,当我需要在服务器上使用Excel文件进​​行交互,您必须安装Office。



文章来源: How to create an instance of Excel if Excel is not installed