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

如何用C#(Excel Interop)给Excel写入公式至最后一行及实现粘贴值?

Excel Interop 基础操作实现(RPA Invoke Code 场景)

一、修正初始化代码

你提供的初始化代码存在类型定义错误,Workbook和Worksheet不需要加Application.前缀,下面是修正后的完整初始化框架:

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

Application xlApp = new Application();
Workbook xlWorkbook = null;
Worksheet xlWorksheet = null;

try
{
    // 先校验文件是否存在
    if (!File.Exists(Path))
    {
        throw new FileNotFoundException("指定的Excel文件不存在");
    }
    xlWorkbook = xlApp.Workbooks.Open(Path);
    xlWorksheet = (Worksheet)xlWorkbook.Sheets["EXTR"];
    // 激活工作表不是必须操作,多数场景下可以省略
    // xlWorksheet.Activate();

二、写入公式到最后一行

先定位数据区域的最后一行,再给目标单元格赋值公式:

// 从A列底部往上找最后一个非空单元格,确定数据最后一行
int lastRow = xlWorksheet.Cells[xlWorksheet.Rows.Count, "A"].End(XlDirection.xlUp).Row;

// 示例:在B列最后一行写入求和公式(求和A1到A[lastRow-1])
Range targetCell = xlWorksheet.Cells[lastRow, "B"];
// Excel公式用英文分隔符,用字符串插值拼接行号更灵活
targetCell.Formula = $"=SUM(A1:A{lastRow-1})";

// 手动触发计算(默认自动计算开启,若未生效可执行此句)
xlApp.Calculate();

三、复制公式列值并仅粘贴值到另一列

通过PasteSpecial指定只粘贴值,忽略原单元格的公式:

// 定义要复制的源区域(B列第1行到最后一行)
Range sourceRange = xlWorksheet.Range["B1:B" + lastRow];
// 定义目标区域的起始单元格(比如C1)
Range targetRange = xlWorksheet.Range["C1"];

// 复制并选择性粘贴值
sourceRange.Copy();
targetRange.PasteSpecial(XlPasteType.xlPasteValues);

// 关闭剪切复制模式,释放剪贴板
xlApp.CutCopyMode = false;

四、插入列操作

示例在C列位置插入一列,并设置表头:

// 指定要插入列的位置(C列)
Range insertColumn = xlWorksheet.Range["C:C"];
// 插入列,右侧列向右偏移
insertColumn.Insert(XlInsertShiftDirection.xlShiftToRight);

// 给新插入的列设置表头
xlWorksheet.Cells[1, "C"].Value = "计算结果";

五、收尾:释放Excel资源

注意:必须执行这部分代码,否则Excel进程会留在后台占用资源

}
catch (Exception ex)
{
    // RPA中可将错误信息写入日志,方便排查
    Console.WriteLine($"操作失败:{ex.Message}");
}
finally
{
    // 关闭并释放工作簿
    if (xlWorkbook != null)
    {
        xlWorkbook.Save(); // 不需要保存就改为 xlWorkbook.Close(false)
        xlWorkbook.Close();
        System.Runtime.InteropServices.Marshal.ReleaseComObject(xlWorkbook);
    }
    // 关闭并释放Excel应用
    if (xlApp != null)
    {
        xlApp.Quit();
        System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp);
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 15:10:38