Excel Interop – 将过滤的工作表复制到不同的Excel实例
假设我有以下Excel Interop对象声明:
Dim ExcelToKeepHidden As New Microsoft.Office.Interop.Excel.Application Dim SheetToCopy As Microsoft.Office.Interop.Excel.Workbook ... Dim ExcelToShow As New Microsoft.Office.Interop.Excel.Application
基本上,我在后台保存了一个隐藏的Excel实例(其中包含了SheetToCopy
– 我将所有基本工作从用户的注意点开始),然后我有一个显示Excel表单的button,当用户点击它时,应该把我的SheetToCopy
对象,并将其复制到ExcelToShow
应用程序。
换句话说,原始的SheetToCopy
保留在ExcelToKeepHidden
应用程序中以进行进一步的操作,但ExcelToShow
将在用户单击该button时显示该表的副本。
所以,我的挑战是我不能只使用SheetToCopy.Copy()
方法,因为新的工作表是在一个完全不同的Excel实例中。 另外,由于我正在操作的操作,我不能复制一个单元格的范围,因为我已经应用了filter,所以paste
function不允许我保持格式化等。
基本上,我看到的唯一的解决办法是在同一个Excel应用程序中将工作表复制到一个新的工作簿中 ,然后closures它,然后在第二个Excel应用程序中重新打开它,但是我想知道是否有更好的方法来实现这个?
有什么想法吗?? (VB或C#代码非常好)
谢谢!!!!)
作为我自己的问题的答案(以防其他人面临类似的问题)。
虽然您不能使用以下方式将数据粘贴到两个应用程序中:
RangeWeWant.Copy() NewSheet.Range(RangeWeWant.Address).PasteSpecial(Microsoft.Office.Interop.Excel.XlPasteType.xlPasteFormats) NewSheet.Range(RangeWeWant.Address).Value = RangeWeWant.Value
由于Range.PasteSpecial
模块会抛出一个错误, Sheet.PasteSpecial
不会!
所以这个代码对我来说是有用的:
RangeWeWant.Copy() NewSheet.Range(RangeWeWant.Address).Range("A1").Select() NewSheet.PasteSpecial(Format:="Microsoft Excel 8.0 Format") NewSheet.Range(RangeWeWant.Address).Value = RangeWeWant.Value
我知道这是一个简单的解决scheme,但它完全做到了!
希望这可以帮助别人!
- “移动图表”不会在Excel Interop对象模型中创build新的工作表
- 与Windows 2008 R2服务器上的Microsoft.Office.Interop.Excel程序集问题
- DateTime到Excel区域问题
- 如何从Excel公式的参数在c#中build立一个string列表
- C#Interop将数组数组写入工作表
- 使用C#中的互操作以独占模式打开一个excel文件
- 如何确定哪些单元格/列有filter设置?
- 不能隐式地将types“对象”转换为“Microsoft.Office.Interop.Excel.Range”
- C#:打开Excel(.XLSX)WorkBook => COMException