Я пытаюсь генерировать сводные таблицы программно, используя C # OpenXML Power Tool.Я пытаюсь экспортировать необработанные данные на лист 1 и сводную таблицу на листе 1.Когда я добавляю целочисленный столбец в качестве значения данных, сводная таблица генерируется с правильными значениями.Но, если я выберу нецелочисленный столбец, счетчик и сгенерированная сумма всегда будут равны нулю.Ниже приведен снимок файла Excel, который он генерирует.
Данные в Pivot.txt имеют следующий формат: год, квартал, регион, категория, продукт, сумма2010, Q1, север, велосипеды, B100, 3448.00 2010, Q1, север, велосипеды, B200, 8448.00 2010, Q1, север, велосипеды, B300, 922.00 2010, Q1, север, аксессуары, зеркала, 303.00 2010, Q1, север,Аксессуары, Carriers, 455.00 2010, Q1, Юг, Велосипеды, B100,2887.00 2010, Q1, Юг, Велосипеды, 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");
}
}