迁移至.NET Core时Microsoft.Office.Interop.Excel方法缺失求助
解决.NET Core中Excel Interop Delete方法不可用的问题
首先明确:.NET Core/.NET 5及以上版本不再官方支持Microsoft.Office.Interop.Excel,它依赖本地安装的Office套件且不支持跨平台,这是你遇到方法不可用的核心原因。下面提供两个可行的替代方案:
方案1:使用EPPlus(推荐)
EPPlus是开源的.NET Excel处理库,完全支持.NET Core,无需依赖本地Office,API简洁易迁移。
删除列的代码示例:
// 先安装EPPlus NuGet包:Install-Package EPPlus using OfficeOpenXml; // 打开Excel文件 using var package = new ExcelPackage(new FileInfo("你的文件路径.xlsx")); var worksheet = package.Workbook.Worksheets["Sheet1"]; // 删除指定列(deleteColumnNumber为列号,从1开始) worksheet.DeleteColumn(deleteColumnNumber); // 保存更改 package.Save();
方案2:使用NetOffice(兼容Interop API)
NetOffice是开源的Office互操作库,兼容.NET Core,API和原生Interop几乎一致,能最大程度减少代码修改。
删除列的代码示例:
// 先安装NetOffice.Excel NuGet包:Install-Package NetOffice.Excel.NetCore using NetOffice.ExcelApi; // 创建Excel实例 using var application = new Application(); var workbook = application.Workbooks.Open("你的文件路径.xlsx"); var worksheet = (Worksheet)workbook.Worksheets["Sheet1"]; // 选中要删除的列范围 var deleteRange = worksheet.Range[worksheet.Cells[1, deleteColumnNumber], worksheet.Cells[endRow, deleteColumnNumber]]; // NetOffice中Delete方法可用,用法和Interop一致 deleteRange.Delete(); // 保存并关闭 workbook.Save(); workbook.Close(); application.Quit();
注意事项
- 若使用NetOffice,需确保本地安装了对应版本的Office,且程序运行时能访问Office组件。
- EPPlus无需依赖Office,适合跨平台场景,是.NET Core下处理Excel的首选。
内容的提问来源于stack exchange,提问作者Hiten Samalia
相关产品推荐
相关产品推荐

