如何使用的Microsoft.Office.Interop.Excel的机器上没有安装微软Offic

2019-06-14 21:38发布

我正在写与Excel文件运行的应用程序。 我需要一个功能来删除表。 我必须使用装配Microsoft.Office.Interop.Excel.dll。

它的运行开发机器上很好,但是当我尝试它在服务器上,我得到一个错误部署:

无法加载文件或程序集“办公室,版本= 14.0.0.0,文化=中性公钥= 71e9bce111e9429c”或它的一个依赖

我明白,当一台机器上没有安装微软Office会出现这个问题。 客户不希望安装在服务器上购买微软Office不是不惜任何代价。

我开发的计算机上安装“可再发行主互操作程序集”这里建议: http://forums.asp.net/t/1530230.aspx/1和重新编译我的项目。

代码示例:

public bool DeleteSheet(string tableName)
{
    Excel.Application app = null;
    Excel.Workbooks wbks = null;
    Excel._Workbook _wbk = null;
    Excel.Sheets shs = null;

    bool found = false;

    try
    {
        app = new Excel.Application();
        app.Visible = false;
        app.DisplayAlerts = false;
        app.AlertBeforeOverwriting = false;

        wbks = app.Workbooks;
        _wbk = wbks.Add(xlsfile);
        shs = _wbk.Sheets;
        int nSheets = shs.Count;

        for (int i = 1; i <= nSheets; i++)
        {
            Excel._Worksheet _iSheet = (Excel._Worksheet)shs.get_Item(i);
            if (_iSheet.Name == tableName)
            {
                _iSheet.Delete();
                found = true;

                Marshal.ReleaseComObject(_iSheet);
                break;
            }
            Marshal.ReleaseComObject(_iSheet);
        }

        if (!found)
            throw new Exception(string.Format("Table \"{0}\" was't found", tableName));

        _wbk.SaveAs(connect, _wbk.FileFormat, Missing.Value, Missing.Value, Missing.Value,
        Missing.Value, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange,
        Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
    }
    finally
    {
        _wbk.Close(null, null, null);
        wbks.Close();
        app.Quit();

        Marshal.ReleaseComObject(shs);
        Marshal.ReleaseComObject(_wbk);
        Marshal.ReleaseComObject(wbks);
        Marshal.ReleaseComObject(app);
    }
    return true;
}

例外

(从HRESULT异常:0x80040154的(REGDB_E_CLASSNOTREG))80040154未注册的类:检索COM类工厂具有CLSID {00024500-0000-0000-C000-000000000046}组件未能由于下面的错误。

出现就行了

app = new Excel.Application();

任何人都可以就如何获得此功能工作的成功?

Answer 1:

无需安装微软Office无法使用的Microsoft.Office.Interop.Excel。

就在谷歌搜索一些图书馆,它允许修改XLS或XLSX:

  • http://code.google.com/p/excellibrary/
  • http://simpleooxml.codeplex.com/ (仅XLSX)


Answer 2:

如果“客户不想安装和购买微软Office的服务器上没有任何代价”,那么你就不能使用Excel ...但我不能得到的伎俩:它是所有关于一个花费像150基本Office许可证美元......而且我猜花时间寻找替代将远远超过这一数额的费用!



Answer 3:

你可以创建一个服务,并生成EXCEL服务器上,然后让客户端下载的Excel。 COS购买许可证的Excel 1000个PPL,最好是有一个服务器许可证。

希望帮助。



Answer 4:

寻找GSpread.NET。 您可以通过使用API​​从Microsoft Excel与谷歌电子表格的工作。 你并不需要重写旧代码与新的谷歌API的使用。 只需添加几行:

Set objExcel = CreateObject("GSpreadCOM.Application");

app.MailLogon(Name, ClientIdAndSecret, ScriptId);

这是一个开源项目,它不需要被安装Office。

可用在这里的文档http://scand.com/products/gspread/index.html



文章来源: How to use Microsoft.Office.Interop.Excel on a machine without installed MS Office?