获得Excel行范围的最快方法

Gay*_*ake 8 c# excel vsto office-interop

在VSTO C#项目中,我想从一组行索引中获取一系列行.

行索引可以是例如"7,8,9,12,14".

然后我想要范围"7:9,12,14"行.

我现在这样做:

Range rng1 = sheet.get_Range("A7:A9,A12,A14", Type.Missing);
rng1  = rng1.EntireRow;
Run Code Online (Sandbox Code Playgroud)

但由于范围规范中的字符串处理,它的效率有点低.

sheet.Rows["7:9"]
Run Code Online (Sandbox Code Playgroud)

有效,但我不能给这个

sheet.Rows["7:9,12,14"] // Fails
Run Code Online (Sandbox Code Playgroud)

Rea*_*idy 13

试试这个:

Sheet.Range("7:9,12:12,14:14")
Run Code Online (Sandbox Code Playgroud)

编辑:对不起,如果在C#中使用VSTO应该是:

sheet.get_Range("7:9,12:12,14:14", Type.Missing)
Run Code Online (Sandbox Code Playgroud)


Sut*_*nil 6

以下是您要查找的代码:

int startRow, endRow, startCol, endCol, row,col;
var singleData = new object[col];
var data = new object[row,col];
//For populating only a single row with 'n' no. of columns.
var startCell = (Range)worksheet.Cells[startRow, startCol];
startCell.Value2 = singleData;
//For 2d data, with 'n' no. of rows and columns.
var endCell = (Range)worksheet.Cells[endRow, endCol];
var writeRange = worksheet.Range[startCell, endCell];
writeRange.Value2 = data;
Run Code Online (Sandbox Code Playgroud)

您可以拥有整个范围,无论是1维还是2维单元格.

在循环遍历整个Excel工作表并在需要的地方和时间填充数据时,此方法特别有用.