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

C#向Excel工作表单元格写入值触发TargetInvocationException异常如何解决

问题核心原因

你遇到的这个异常本质是封装了底层实际错误的包装异常,90%以上的概率是Excel单元格的行/列索引是从1开始计数,而你用了C#默认的0基索引访问,当i=0时调用Cells[2, 0]访问了不存在的第0列,直接触发底层报错。

修复方案

直接把列索引偏移1位即可,修改后的代码如下:

for (int i = 0; i < intColumnCount; i++)
{
    strColumnName = dataPHLIP251.Columns[i].ToString();
    // 列索引从1开始,所以i加1
    excelWorksheet.Cells[2, i + 1].Value = strColumnName;
}

其他排查建议

如果修改后还是报错,可以加try catch捕获异常查看内部错误,就能直接定位根因:

try
{
    for (int i = 0; i < intColumnCount; i++)
    {
        strColumnName = dataPHLIP251.Columns[i].ToString();
        excelWorksheet.Cells[2, i + 1].Value = strColumnName;
    }
}
catch (System.Reflection.TargetInvocationException ex)
{
    // 输出内部异常的信息,就是实际报错的原因
    Console.WriteLine(ex.InnerException?.Message);
}

另外可以额外确认两点:

  • excelWorksheet 已经完成初始化,不是null
  • intColumnCount 的取值和 dataPHLIP251.Columns.Count 一致,不会出现数组越界访问数据源列的情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 19:15:08