【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 的操作,如果 build 为 true,则调用 WriteToExcel 方法。

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

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

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

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

相关推荐
晨曦中的暮雨8 分钟前
限流算法——固定窗口、滑动窗口、漏桶、令牌桶
java·开发语言·算法
文丑颜不良啊1 小时前
LeetCode876~900题目解析
java·leetcode
aloha_7892 小时前
Java 基础、集合、异常与 JUnit 5 速查
java·junit·sqlserver
淡海水2 小时前
07-02-源码-.NET Core GC分配路径
算法·unity·c#·.netcore·gc·1024程序员节
知守观3 小时前
设计模式实战:从真实老项目中看标准模板方法与工厂的落地
java·spring·设计模式
独隅3 小时前
Claude API 实战教程:从入门到完整项目
android·java·数据库·claude·claude code
Wang's Blog3 小时前
Java 项目实战: 交友项目 - 圈子功能实现:总结
java·开发语言·交友
SL_staff3 小时前
JVS私有化文档系统上线避坑指南:5大运维与业务协同断点及检测加固实践
java·开源·全栈
吴可可1234 小时前
C#调用摄像头拍照的三种API方案
c#
FinelyYang5 小时前
考试系统简答题 AI 阅卷:覆盖度驱动、异步评分与人机协同落地实践
java·大数据·人工智能