gpt4 book ai didi

c# - 具有多个区域的 Excel Get_Range

转载 作者:太空狗 更新时间:2023-10-29 18:28:02 24 4
gpt4 key购买 nike

我正在尝试从 Excel 中获取范围,其中指定了多个区域,基本上我已经...

整数开始列
int EndColumn
int[] ColumnsToSkip

当您将这些组合在一起时,可能会产生一个具有不连续区域的范围。不幸的是,我无法完全弄清楚获得这个的电话...MSDN 不是很有用...

工作表;

sheet.get_Range( what goes in here??? );

有人提供帮助吗?干杯。

最佳答案

一个非常简单的解决方案是以逗号分隔的形式指定不同的区域:

sheet.get_Range( "A1:B1,E1:G1");

对于编程范围组合,还有 ExcelApplication 对象的 UnionIntersection 方法。由于许多可选参数,这些在 C# 中使用起来有点笨拙。看这里

http://codeidol.com/csharp/c-sharp-in-office/Working-with-Excel-Objects/Working-with-the-Range-Object/

例如。

编辑:一些额外的提示:

在您的情况下,您首先应该转换“ColumnsToKeep”中的“ColumnsToSkip”,因为这是任何类型的单元联合所需要的。这是一个 Linq 解决方案:

int[] ColumnsToKeep = Enumerable.Range(StartColumn, EndColumn -StartColumn + 1)
.Except(ColumnsToSkip)
.ToArray();

然后,您可以按照此示例创建一些内容:

   Excel.Range totalRange = null;
foreach(int col in ColumnsToKeep)
{
totalRange = Union(excelApp,totalRange,(Excel.Range)sh.Cells[row, col]);
}

其中定义了“Union”,例如,像这样:

    static Excel.Range Union(Excel.Application app, Excel.Range r1, Excel.Range r2)
{
if (r1 == null && r2 == null)
return null;
if (r1 == null)
return r2;
if (r2 == null)
return r1;
return app.Union(r1, r2,
null, null, null, null, null, null,
null, null, null, null, null, null,
null, null, null, null, null, null,
null, null, null, null, null, null,
null, null, null, null);
}

关于c# - 具有多个区域的 Excel Get_Range,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6155182/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com