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)
以下是您要查找的代码:
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工作表并在需要的地方和时间填充数据时,此方法特别有用.