我正在尝试使用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个单元格。我在这里想念什么?请注意,我正在应用样式的范围开始为空(我仅在设置格式后才写入数据),因此这不是从单元格中的数据派生的问题。
答案 0 :(得分:0)
好吧,我弄清楚了:excel文件看上去是为空,但实际上它包含一个在第91行处停止的表。很明显,当您将格式粘贴到“混合”的范围时(表格内部的一半和普通单元格的一半)仅适用于表格内部的部分。