vsto不用循环的方式 非连续单元格赋值

如果你不想使用循环的方式,而是想直接赋值给多个不相邻的单元格,你可以使用 Range 对象的 Value 属性,并通过逗号分隔的单元格地址字符串进行赋值。以下是一个示例:

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

class Program
{
    static void Main()
    {
        // 创建 Excel 应用程序对象
        Excel.Application excelApp = new Excel.Application();
        excelApp.Visible = true; // 使 Excel 可见

        // 添加一个新的工作簿
        Excel.Workbook workbook = excelApp.Workbooks.Add();
        
        // 获取工作表
        Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Worksheets[1];

        // 定义二维数组
        object[,] data = new object[,]
        {
            { "B2", "A7", "A9" },
            { 1, 2, 3 }
        };

        // 获取数组的行数和列数
        int rows = data.GetLength(0);
        int cols = data.GetLength(1);

        // 构建逗号分隔的单元格地址字符串
        string cellAddresses = string.Join(",", data.Cast<object>().Where((value, index) => index % cols == 0).Select(value => Convert.ToString(value)));

        // 将数组赋值给指定单元格
        worksheet.Range[cellAddresses].Value = data;

        // 释放 Excel 对象
        ReleaseObject(worksheet);
        ReleaseObject(workbook);
        ReleaseObject(excelApp);
    }

    // 释放 COM 对象
    static void ReleaseObject(object obj)
    {
        try
        {
            System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
            obj = null;
        }
        catch (Exception ex)
        {
            obj = null;
            Console.WriteLine("Exception Occurred while releasing object " + ex.ToString());
        }
        finally
        {
            GC.Collect();
        }
    }
}

在这个示例中,我们使用 string.Join 构建了一个逗号分隔的单元格地址字符串,并将其作为参数传递给 Range 对象的 Value 属性。这样,可以一次性将数据赋值给多个不相邻的单元格,而不需要循环。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值