将格式应用于大范围

Applying formatting to a big range

我正在尝试使用 Excel Interop C# 库将单元格格式从一个单元格复制到一系列其他单元格。为此,我使用了以下代码:

var excelWrapper = new Application();
excelWrapper.DisplayAlerts = false;

var workBook = excelWrapper.Workbooks.Open(@"C:\myFile.xlsx");
Worksheet ws = workBook.Sheets[1] as Worksheet;
Range formatSource = ws.Cells[8, 1] as Range; //cell containing formatting that I want to apply
Range startCell = ws.Cells[9, 1] as Range; //first cell to format
Range endCell = ws.Cells[300, 1] as Range; //last cell to format
Range formatTarget = ws.Range[startCell, endCell];

//Copy formatting from source cell to destination range
formatSource.Copy();
formatTarget.PasteSpecial(XlPasteType.xlPasteFormats, XlPasteSpecialOperation.xlPasteSpecialOperationNone, false, false);

如您所见,我将单元格 [8,1] 中的格式应用到整个范围 [9,1] -> [300,1]

我遇到的问题是,这仅将格式应用于前 ~80 个左右的单元格,之后不应用格式。特别是,格式在第 91 行之后停止,因此它仅应用于范围内 291 个单元格中的前 84 个单元格。

我不明白为什么格式没有应用到我选择的整个范围,而是只应用到前 84 个单元格。我在这里错过了什么?请注意,我应用样式的范围开始为空(我只在设置格式后写入数据),因此这不是单元格中数据的问题。

好吧,我想通了:excel 文件 看起来 是空的,但实际上它包含一个停在第 91 行的 table。显然,当您将格式粘贴到 "hybrid" 范围(一半在 table 和一半正常单元格内)时,格式仅应用于 table.

内的部分