You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Microsoft.Office.InterOp.Excel转CSV为XLSX遇文件未找到异常求助

解决.NET 6下使用Microsoft.Office.Interop.Excel转换CSV到XLSX的程序集加载问题

问题根源

System.IO.FileNotFoundException提示无法加载Office 15.0.0.0程序集,本质是以下几个原因:

  • 本地未安装对应版本的Office(15.0对应Office 2013),或Office位数与项目平台目标不匹配
  • 未正确安装对应版本的Interop NuGet包
  • 代码中存在路径错误等逻辑问题

解决步骤

1. 验证本地Office环境

  • 必须安装Office 2013及以上版本,如果没有安装Office,建议改用无需依赖本地Office的开源库(如EPPlus、NPOI),避免Interop的兼容性问题
  • 确认Office的位数(32位/64位),后续项目平台目标要和Office位数一致

2. 正确安装Interop NuGet包

不要用gcutil手动添加引用,直接在NuGet包管理器中搜索并安装Microsoft.Office.Interop.Excel,选择与本地Office版本匹配的包版本(如Office 2013对应15.x系列的包)

3. 调整项目平台目标

  • 右键项目 → 属性 → 生成 → 平台目标,选择x86或x64(与本地Office位数一致,多数默认Office为32位,选x86)
  • 取消勾选“首选32位”(如果是AnyCPU模式下的选项)

4. 修正代码中的错误

原代码存在路径引用错误、未释放COM对象的问题,修正后的代码如下:

using System.IO;
using System.Runtime.InteropServices;
using Microsoft.Office.Interop.Excel;

public void ConverterF()
{
    Application excelApp = null;
    Workbooks workbooks = null;
    Workbook workbook = null;

    try
    {
        excelApp = new Application();
        string csvPath = @"C:\Escritorio\ExcelFile.csv";
        string savePath = @"C:\Escritorio\NewTest.xlsx";

        workbooks = excelApp.Workbooks;
        // 使用完整路径打开CSV,指定分隔符为逗号
        workbook = workbooks.OpenText(
            Filename: csvPath,
            DataType: XlTextParsingType.xlDelimited,
            ConsecutiveDelimiter: true,
            Comma: true
        );

        // 保存为XLSX格式
        workbook.SaveAs(
            Filename: savePath,
            FileFormat: XlFileFormat.xlWorkbookDefault
        );
    }
    finally
    {
        // 释放COM对象,避免Excel进程残留
        workbook?.Close();
        workbooks?.Close();
        excelApp?.Quit();

        if (workbook != null) Marshal.ReleaseComObject(workbook);
        if (workbooks != null) Marshal.ReleaseComObject(workbooks);
        if (excelApp != null) Marshal.ReleaseComObject(excelApp);
    }
}

说明:

  • 去掉了不必要的CSV重命名操作,OpenText可以直接读取CSV文件
  • 使用完整路径确保文件能被找到
  • 添加finally块释放COM对象,防止Excel进程在后台残留

内容的提问来源于stack exchange,提问作者Diana Torrontegui

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 13:27:19