我正在使用VSTO与Excel 2007动态生成数据透视表和数据透视图。 当我需要在多个列中使用PivotField时,我遇到了问题。
为了实现这一点,我在Excel中创建了一个数据透视表,并将其属性序列化为XML文档,然后我用它来重建数据透视表。
即:作为一个值和一个列
在Excel中构建数据透视表时可以这样做。找到了一种使用C#的方法吗?
答案 0 :(得分:1)
如果您将计算字段添加到Piviot表并使公式只是字段的名称,您需要重复两次,允许您使用相同的字段两次,计算字段必须是值字段。
很可能你可以以编程的方式做到这一点。
答案 1 :(得分: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;
}