2008-09-19 159 views
0

我正在使用VSTO与Excel 2007来动态生成数据透视表和数据透视图。 我有一个问题,当我需要在多个列中有一个PivotField时。VSTO Excel 2007数据透视表,在多个列中具有数据透视表

为了实现这个功能,我在Excel中创建了一个数据透视表,并将其属性序列化为一个XML文档,然后用它来重建数据透视表。

即:作为一个值,作为列

在Excel中构建数据透视表时,这是可能的。已经找到了一种使用C#做到这一点的方法?

Creating a PivotTable Programmatically

回答

1

如果计算字段添加到Piviot表,使公式仅仅是你需要的是一个重复的,您可以使用相同的字段两次字段的名称,计算出的字段确实有成为一个价值领域。

可能你可以通过编程来做到这一点。

0

一旦你有你的数据集,你可以将其转换为一个对象[,]并将其插入到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; 
      }