VSTO Excel 2007数据透视表,在一个以上的列中有一个PivotField
时间:2020-03-06 14:27:50 来源:igfitidea点击:
我将VSTO与Excel 2007一起使用以动态生成数据透视表和数据透视图。
当我需要一个以上的PivotField时,我遇到了一个问题。
为此,我在Excel中创建了一个数据透视表并将其属性序列化为XML文档,然后使用该文档来重建数据透视表。
即:作为值和列
在Excel中构建数据透视表时,这是可能的。找到了使用C做到这一点的方法吗?
以编程方式创建数据透视表
解决方案
如果将计算字段添加到" Piviot表"中,并使公式简单地成为字段名称,则需要重复该字段,以允许我们两次使用同一字段,"计算字段"必须是"值"字段。
也许我们可以以编程方式执行此操作。
获得数据集后,可以将其转换为object [,]并将其插入Excel文档中。然后,我们可以将文档保存到磁盘并将其流式传输给用户。
for (int cIndex = 1; cIndex < 1 + columns; cIndex++) sheet.Cells.set_Item(4, cIndex, data.Columns[cIndex - 1].Caption); if (rows > 0) { //select the range where the data will be pasted Range r = sheet.get_Range(sheet.Cells[5, 1], sheet.Cells[5 + (rows - 1), columns]); //Convert the datatable to an object array object[,] workingValues = new object[rows, columns]; for (int rIndex = 0; rIndex < rows; rIndex++) for (int cIndex = 0; cIndex < columns; cIndex++) workingValues[rIndex, cIndex] = data.Rows[rIndex][cIndex].ToString(); r.Value2 = workingValues; }