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

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 库。
在这里插入图片描述

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
C# for Grasshopper,可以使用以下代码将图形旋转: ```csharp // 引用所需的命名空间 using Rhino.Geometry; // 定义旋转角度(以弧度为单位) double angle = Math.PI / 4; // 定义旋转心点 Point3d center = new Point3d(0, 0, 0); // 定义要旋转的图形 List<Line> lines = new List<Line>(); // 假设图形是一组线段 // 进行旋转 for (int i = 0; i < lines.Count; i++) { // 将每条线段的起点和终点绕旋转心点旋转指定角度 lines\[i\].From = RotatePoint(lines\[i\].From, center, angle); lines\[i\].To = RotatePoint(lines\[i\].To, center, angle); } // 定义旋转点的方法 Point3d RotatePoint(Point3d point, Point3d center, double angle) { Vector3d vector = point - center; vector.Rotate(angle, Vector3d.ZAxis); return center + vector; } // 将旋转后的图形赋值给新的变量 List<Line> rotatedLines = lines; // 输出旋转后的图形 A = rotatedLines; ``` 这段代码,我们首先定义了旋转角度和旋转心点。然后,我们遍历图形的每条线段,将每个点绕旋转心点旋转指定角度。最后,将旋转后的图形赋值给新的变量,并将其输出。请注意,这只是一个示例代码,具体的实现可能会根据你的需求而有所不同。 #### 引用[.reference_title] - *1* [在Grasshopper使用C#开发之(一)——C#调用Grasshopper的电池](https://blog.csdn.net/qq_41904236/article/details/124549931)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [C# for Grasshopper 使用时碰到的一些坑(长期更新)](https://blog.csdn.net/qq_41904236/article/details/124914058)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hmywillstronger

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值