2008-09-19 260 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; 
      }