使用C#将一个行的格式复制到另一个行

5
这个问题与这里提出的问题非常相似。但是给出的答案建议将格式与数据一起复制。 我有一个使用SSIS生成的Excel表格(.xlsx),现在我已经在第一行中设置了格式,我希望将其复制到工作表中已经填充的所有行中。 我该如何使用C#来实现呢?我正在使用Excel interop。

展示你用来格式化第一行的代码,或许可以将其应用到其他行。 - Andy G
1
我正在手动设置模板文件的第一行格式。新行将添加到此模板文件中,并需要将格式应用于这些行。 - trailblazer
3个回答

13
你可以使用 PasteSpecialxlPasteFormats
Excel.Range R1 = (Excel.Range)oSheet.Cells[11, 11];
R1.Copy(Type.Missing);

Excel.Range R2 = (Excel.Range)oSheet.Cells[15, 15];
R2.PasteSpecial(Excel.XlPasteType.xlPasteFormats,
    Excel.XlPasteSpecialOperation.xlPasteSpecialOperationNone, false, false);

3
太糟糕了,它会劫持剪贴板。这不是一个可行的解决方案。 - Leo Gurdian

4

所以你想要从第一个单元格复制格式并将其应用到所有工作表中。

有一种处理方式:

 Range sourceRange = sheet.get_Range("A1:A1");
 sourceRange.Copy();

 Range last = sheet.Cells.SpecialCells(XlCellType.xlCellTypeLastCell, Type.Missing);
 Range destinationRange = sheet.get_Range("A1", last);

 destinationRange.PasteSpecial(XlPasteType.xlPasteFormats);

PasteSpecial中,对于缺失的参数需要提供System.Type.Missing - Andy G
1
运行 PasteSpecial() 而不带任何参数就可以很好地工作。那你的意思是什么? - mickro
1
抱歉,我的错误!我错误地回忆起使用Interop时C#需要提供所有参数的要求。从C# 2010开始(引入了可选参数),这个要求不再是必需的。 - Andy G
如果我想要复制该行单元格的值怎么办? - Si8

0

我按照mickro的解释使用它,它完美地工作了!!!

                Range contentAlarms =exlWsheetAlarms.get_Range("A1:G"+countList);
                contentAlarms.Copy(Type.Missing);

                Range last = exlWsheetUlt.Cells.SpecialCells(XlCellType.xlCellTypeLastCell, Type.Missing);
                Range destinationRange = exlWsheetUlt.get_Range("B90", last);

                destinationRange.PasteSpecial(XlPasteType.xlPasteFormats);

谢谢!


所以你是将 contentAlarms 复制到 last 中? - Si8

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接