【C#】【EXCEL】将grasshopper中指定列数据写入EXCEL中

csharp 复制代码
using System;
using System.Collections.Generic;
using Excel = Microsoft.Office.Interop.Excel;

public void RunScript(bool build, List<object> data, string filePath, string sheetName, string columnLetter)
{
    if (build)
    {
        WriteToExcel(data, filePath, sheetName, columnLetter);
    }
}

public static void WriteToExcel(List<object> data, string filePath, string sheetName, string columnLetter)
{
    Excel.Application excelApp = new Excel.Application();
    Excel.Workbook workbook = excelApp.Workbooks.Open(filePath);
    Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Worksheets[sheetName];

    int rowIndex = 1;
    foreach (var item in data)
    {
        worksheet.Range[columnLetter + rowIndex.ToString()].Value = item;
        rowIndex++;
    }

    workbook.Save();
    workbook.Close();
    excelApp.Quit();

    ReleaseObject(worksheet);
    ReleaseObject(workbook);
    ReleaseObject(excelApp);
}

private static void ReleaseObject(object obj)
{
    System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
    obj = null;
    System.GC.Collect();
}

主要部分:

  1. RunScript 方法: 接受 build 参数来控制是否执行写入 Excel 的操作,如果 buildtrue,则调用 WriteToExcel 方法。

  2. WriteToExcel 方法: 打开指定的 Excel 文件,将数据写入指定的工作表和列中,然后保存并关闭 Excel 文件。

  3. ReleaseObject 方法: 释放 COM 对象,并强制进行垃圾回收。

代码假设 Excel 文件已经存在,并且工作表也已经存在。它没有处理创建新 Excel 文件或工作表的情况,也没有详细的异常处理。

在使用此代码之前,请确保已安装 Microsoft Office,并在 Grasshopper 中引用 Microsoft.Office.Interop.Excel 库。

相关推荐
indexsunny14 小时前
互联网大厂Java求职面试实战:Spring Boot微服务与Redis缓存场景解析
java·spring boot·redis·缓存·微服务·消息队列·电商
无心水14 小时前
【分布式利器:腾讯TSF】7、TSF高级部署策略全解析:蓝绿/灰度发布落地+Jenkins CI/CD集成(Java微服务实战)
java·人工智能·分布式·ci/cd·微服务·jenkins·腾讯tsf
28岁青春痘老男孩19 小时前
JDK8+SpringBoot2.x 升级 JDK 17 + Spring Boot 3.x
java·spring boot
方璧19 小时前
限流的算法
java·开发语言
元Y亨H19 小时前
Nacos - 服务注册
java·微服务
曲莫终20 小时前
Java VarHandle全面详解:从入门到精通
java·开发语言
一心赚狗粮的宇叔20 小时前
中级软件开发工程师2025年度总结
java·大数据·oracle·c#
奋进的芋圆20 小时前
DataSyncManager 详解与 Spring Boot 迁移指南
java·spring boot·后端
计算机程序设计小李同学20 小时前
个人数据管理系统
java·vue.js·spring boot·后端·web安全
cplmlm21 小时前
EF Core使用CodeFirst生成postgresql数据库表名以及字段名用蛇形命名法,而类名仍使用驼峰命名
c#