【问题标题】:Applying formatting to a big range将格式应用于大范围
【发布时间】:2018-10-31 21:54:06
【问题描述】:

我正在尝试使用 Excel 互操作 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 个单元格。我在这里想念什么?请注意,我将样式应用到的范围开始为空(我仅在设置格式后才写入数据),因此这不是来自单元格中的数据的问题。

【问题讨论】:

    标签: c# excel excel-interop


    【解决方案1】:

    好吧,我想通了:excel 文件看起来是空的,但实际上它包含一个停止在第 91 行的表格。显然,当您将格式粘贴到“混合”范围时(一半在表格内,一半在普通单元格中)该格式仅适用于表格内的部分。

    【讨论】:

      猜你喜欢
      • 2016-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-07
      相关资源
      最近更新 更多