CSharp - 在没有安装 MS Office的机器上,C# 如何使用 Microsoft.Office.Interop.Excel?

  显示原文与译文双语对照的内容

我正在编写一个与excel文件一起工作的应用程序。 我需要一个功能来 delete 。 我必须使用汇编 Microsoft.Office.Interop.Excel.dll 。

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

无法加载文件或者程序集'。Office,Version= 14.0.0.0,Culture=neutral,PublicKeyToken=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;


}



例外

由于以下错误,检索带有 CLSID {00024500-0000-0000-C000-000000000046}的组件的com类工厂失败: 80040154类未注册( 来自HRESULT的异常: 0 x80040154 ( REGDB_E_CLASSNOTREG ) ) 。

发生在行


app = new Excel.Application();



谁能让这个功能成功工作?

时间: 原作者:

没有安装 ms Office,你就不能使用 Microsoft.Office.Interop.Excel 。

在google搜索某些库,这些库允许修改xls或者 xlsx:

原作者:
...