c++ - Excel 互操作 : Grouping columns

标签 c++ excel grouping com-interop

如何使用 Excel 互操作对列进行分组?

如果我录制一个宏(通常是一个很好的开始方式),我会得到以下代码:

Columns("I:M").Select
Selection.Columns.Group

不幸的是,由于几个问题,这不起作用,至少在 C++ 中是这样。首先,Application.Selection返回一个普通的Range,然后Range.Columns是另一个RangeRange.Group 是这个方法:

http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.range.group%28v=office.11%29.aspx

此方法仅适用于数据透视表。

那么如何使用 Excel 互操作创建列组?

即使我成功创建了一个组,我如何缩小/扩展它?我的意思是单击 + 以显示组的内容,或者相反,“单击”减号以隐藏组。如果我在录制宏时这样做,它根本不会反射(reflect)在宏中。

最佳答案

尽管 Range.Group() 文档似乎与数据透视表相关,但如果您使用 Range.Columns 提取列,然后应用 .Group() 方法到该范围,就会达到预期的效果。在 C# 中:

Range range = sheet.get_Range("c1","e1");
range.Columns.Group();

编辑:完整的示例,再次用 C# 编写(抱歉,这是我方便的示例):

Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application();
app.Visible = true;
app.Workbooks.Add();
Worksheet sheet = app.Workbooks[1].Sheets[1];
Range range = sheet.get_Range("c1","e1");
range.Columns.Group();

关于c++ - Excel 互操作 : Grouping columns,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10246682/

相关文章:

c++ - 将单词和数字的文件输入数组 C++

Excel - 根据另一个字段计算范围内的唯一性

Excel公式: Sum if two columns match

java - 即使在执行 fileoutputstream.close() 之后,Apache-POI 也不保存 Excel 工作簿

java - 使用 Java 8 Streams 将 List<Object> 转换为 Map<String, Integer> 使得 String 不是重复值

c++ - 嵌套循环问题中的变量分配

c++ - 在 OpenGL 中渲染 .obj 文件最终会丢失顶点

javascript - 如何使用 NPAPI 创建一个新的 JS 对象?

javascript - 使用 loadonce 时的 JQGrid 分组问题

python - 如何从匹配的表达式中找到特定的单词?