将格式应用于大范围

时间:2018-10-31 10:31:36

标签: c# excel excel-interop

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

WITH t AS (
     SELECT DISTINCT name, tm
     FROM table t CROSS APPLY
          ( VALUES (TM1), (TM2), (TM3), (TM4), (TM5)
          ) tt (tm)
) 
SELECT nam, 
       (SELECT ''+t1.tm
        FROM t t1
        WHERE t1.nam = t.nam
        FOR XML PATH('')
       ) AS tn
FROM t;

如您所见,我正在将单元格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]

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

我不明白为什么格式化不应用于我选择的整个范围,而仅应用于前84个单元格。我在这里想念什么?请注意,我正在应用样式的范围开始为空(我仅在设置格式后才写入数据),因此这不是从单元格中的数据派生的问题。

1 个答案:

答案 0 :(得分:0)

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