c# - 在 C# 中使用 OpenXML Power Tool 数据透视表
问题描述
我正在尝试使用 C# OpenXML Power 工具以编程方式生成数据透视表。我正在尝试将原始数据导出到工作表 1 和工作表 1 上的数据透视表。当我将整数列添加为数据值时,会生成具有适当值的数据透视表。但是,如果我选择一个非整数列,则生成的计数和总和始终为零。以下是它生成的 excel 文件的快照。
Pivot.txt 中的数据格式如下:Year,Quarter,Region,Category,Product,Amount 2010,Q1,North,Bicycles,B100,3448.00 2010,Q1,North,Bicycles,B200,8448.00 2010,Q1,North ,自行车,B300,922.00 2010,Q1,North,Accessories,Mirrors,303.00 2010,Q1,North,Accessories,Carriers,455.00 2010,Q1,South,Bicycles,B100,2887.00 2010,Q1,South,Bicycles,B200,4477.00 2010,Q1,南,自行车,B300,1011.00 2010,Q1,南,配件,镜子,80.00 2010,Q1,南,配件,载具,205.00
以下是我正在使用的代码:
private static void generatePivot()
{
int row;
row = 1;
int maxColumn = 1;
using (OpenXmlMemoryStreamDocument streamDoc = OpenXmlMemoryStreamDocument.CreateSpreadsheetDocument())
{
using (SpreadsheetDocument doc = streamDoc.GetSpreadsheetDocument())
{
WorksheetPart sheet = WorksheetAccessor.AddWorksheet(doc, "Range");
using (System.IO.StreamReader source = new System.IO.StreamReader("../../PivotData.txt"))
{
while (!source.EndOfStream)
{
string line = source.ReadLine();
if (line.Length > 3)
{
string[] fields = line.Split(',');
int column = 1;
foreach (string item in fields)
{
double num;
if (double.TryParse(item, out num))
WorksheetAccessor.SetCellValue(doc, sheet, row, column++, num);
else
WorksheetAccessor.SetCellValue(doc, sheet, row, column++, item);
}
maxColumn = column - 1;
}
row++;
}
}
sheet.PutXDocument();
WorksheetAccessor.SetRange(doc, "Sales", "Range", 1, 1, row - 1, maxColumn);
WorksheetPart pivot = WorksheetAccessor.AddWorksheet(doc, "Pivot");
WorksheetAccessor.CreatePivotTable(doc, "Sales", pivot);
// Configure pivot table rows, columns, data and filters
//WorksheetAccessor.AddPivotAxis(doc, pivot, "Year", WorksheetAccessor.PivotAxis.Column);
WorksheetAccessor.AddPivotAxis(doc, pivot, "Quarter", WorksheetAccessor.PivotAxis.Column);
WorksheetAccessor.AddPivotAxis(doc, pivot, "Category", WorksheetAccessor.PivotAxis.Row);
//WorksheetAccessor.AddPivotAxis(doc, pivot, "Product", WorksheetAccessor.PivotAxis.Row);
WorksheetAccessor.AddDataValue(doc, pivot, "Product");
WorksheetAccessor.AddPivotAxis(doc, pivot, "Region", WorksheetAccessor.PivotAxis.Page);
}
streamDoc.GetModifiedSmlDocument().SaveAs("../../NewPivot.xlsx");
}
}
解决方案
推荐阅读
- javascript - JSON.parse & JSON.stringify
- python - 聚类像素以创建实体形状
- google-cloud-tpu - 无法创建 TPU 节点:RESOURCE_EXHAUSTED
- python - 如何设置 Pandas DataFrame 并在 python 中创建 networkx 图
- r - 如何在闪亮应用的侧边栏中设置同一行中的小部件之间的距离
- excel - 如何获得“选择案例以测试范围内的每个单元格?
- google-cloud-platform - 如何为每个“记录”类型字段删除 BigQuery 表中的 __key__ 列?
- node.js - Express.js /public 文件夹的 Kubernetes Ingress 重定向
- javascript - 以变量为参数的wordpress简码
- python - Sympy:如何使用第二个量化模块获得简化的换向器?