Welcome

首页 / 软件开发 / .NET编程技术 / 使用VSTO复制部分Excel单元格(带格式),粘贴并保存到另一Excel

使用VSTO复制部分Excel单元格(带格式),粘贴并保存到另一Excel2011-05-13 博客园 zhaojunqi最近使用VSTO做了一个小项目,其中有一个需求是将一个Excel工作表中的很多个带格式的区域,分别另存到单独的Excel文件中,要求保留源格式。

虽然需求很简单,但也有几个技术点要搞明白:

1.带格式复制,但只复制值和格式,不复制公式,引用,校验等等。

2.另存为Excel

第一个问题,开始我以为很简单,直接使用选择性粘贴,粘贴所有就行了,其实不是那么简单。开始使用如下代码:

PasteSpecial

ws.get_Range(beginCell, pasteRange).PasteSpecial

(Microsoft.Office.Interop.Excel.XlPasteType.xlPasteAll,

Microsoft.Office.Interop.Excel.XlPasteSpecialOperation.xlPasteSpecialOperationNone,

Type.Missing, Type.Missing);

但发现复制出来的只是所有的值,格式都未复制出来。于是对Microsoft.Office.Interop.Excel.XlPasteType进行研究,发现有十几个选项,逐个试验,发现单独使用任何一个枚举都不能满足我的要求。后来灵机一动,使用了两次复制解决问题,一次复制值,一次复制格式!代码如下:

PasteSpecial2

ws.get_Range(beginCell, pasteRange).PasteSpecial

(Microsoft.Office.Interop.Excel.XlPasteType.xlPasteValues,

Microsoft.Office.Interop.Excel.XlPasteSpecialOperation.xlPasteSpecialOperationNone,

Type.Missing, Type.Missing);
ws.get_Range(beginCell, pasteRange).PasteSpecial

(Microsoft.Office.Interop.Excel.XlPasteType.xlPasteFormats,

Microsoft.Office.Interop.Excel.XlPasteSpecialOperation.xlPasteSpecialOperationNone,

Type.Missing, Type.Missing);