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

如何使用C#将数据写入现有Excel文件的指定单元格?

该需求完全可以实现,无需新建工作表,直接操作已有Excel文件的指定单元格即可,以下是两种常用实现方案:

方案一:使用EPPlus轻量库操作(无需安装Office,推荐)

EPPlus是专门操作Excel xlsx格式的轻量库,不需要本地安装Office就能运行。

  • 第一步:安装EPPlus包,Nuget搜索EPPlus安装到你的WinForms项目即可,非商用场景可免费使用。
  • 第二步:编写写入逻辑,核心代码示例:
// 首先引入命名空间
using OfficeOpenXml;
using System.IO;

// 写入逻辑可以放在你的按钮点击事件等触发位置
private void btnWriteToExcel_Click(object sender, EventArgs e)
{
    // 替换为你已有Excel文件的绝对路径
    string excelPath = @"C:\你的存储路径\目标文件.xlsx";
    // 非商用声明,EPPlus 5+版本必须添加否则会报错
    ExcelPackage.LicenseContext = LicenseContext.NonCommercial;

    using (ExcelPackage package = new ExcelPackage(new FileInfo(excelPath)))
    {
        // 选择你要操作的已有工作表,也可以按名称选择:package.Workbook.Worksheets["你的工作表名称"]
        ExcelWorksheet worksheet = package.Workbook.Worksheets[0];
        
        // 写入datetimepicker1的日期值到第2行第5列(EPPlus行、列均从1开始计数,和需求坐标完全匹配)
        worksheet.Cells[2, 5].Value = dateTimePicker1.Value;
        // 写入txtName的文本内容到第5行第6列
        worksheet.Cells[5, 6].Value = txtName.Text;

        // 直接保存修改到原文件,不会新建文件
        package.Save();
    }
    MessageBox.Show("数据写入完成");
}
方案二:使用Office Interop操作(需要本地安装Excel)

如果运行环境确定安装了Office,可以使用官方的Interop库操作:

  • 第一步:添加COM引用,右键项目→添加→引用→COM→找到Microsoft Excel XX.X Object Library添加到项目中。
  • 第二步:核心代码示例:
// 引入命名空间
using Microsoft.Office.Interop.Excel;
using System.Runtime.InteropServices;

private void btnWriteToExcel_Click(object sender, EventArgs e)
{
    string excelPath = @"C:\你的存储路径\目标文件.xlsx";
    Application excelApp = null;
    Workbook workbook = null;
    Worksheet worksheet = null;

    try
    {
        excelApp = new Application();
        // 打开已有的Excel文件
        workbook = excelApp.Workbooks.Open(excelPath);
        // 选择第一个工作表,也可以按名称取:workbook.Sheets["你的工作表名称"]
        worksheet = (Worksheet)workbook.Sheets[1];

        // 写入对应数据,行、列均从1开始计数
        worksheet.Cells[2, 5] = dateTimePicker1.Value;
        worksheet.Cells[5, 6] = txtName.Text;

        // 保存修改
        workbook.Save();
        MessageBox.Show("数据写入完成");
    }
    catch (Exception ex)
    {
        MessageBox.Show("写入失败:" + ex.Message);
    }
    finally
    {
        // 释放COM资源,避免Excel后台进程残留
        if (worksheet != null) Marshal.ReleaseComObject(worksheet);
        if (workbook != null)
        {
            workbook.Close();
            Marshal.ReleaseComObject(workbook);
        }
        if (excelApp != null)
        {
            excelApp.Quit();
            Marshal.ReleaseComObject(excelApp);
        }
    }
}
注意事项
  • 两种方案的单元格计数均从1开始,和你需求里的坐标完全匹配,不需要做偏移换算
  • 操作前请确保目标Excel文件没有被其他程序占用打开,否则会触发保存失败的报错
  • 如果需要写入.xls格式的旧版Excel,推荐使用NPOI库操作,逻辑和EPPlus基本一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 05:15:05