我m到處內存異常的系統停止,同時用NReco ExcelPivotTableWriter樞軸Excel中隨着NReco,內存異常的系統停止
public void Write(PivotTable pvtTbl)
{
var tbl = getPivotDataAsTable(pvtTbl.PivotData);
var rangePivotTable = wsData.Cells["A1"].LoadFromDataTable(tbl, false);
var pivotTable = ws.PivotTables.Add(
ws.Cells[1, 1],
rangePivotTable, "pvtTable");
foreach (var rowDim in pvtTbl.Rows)
pivotTable.RowFields.Add(pivotTable.Fields[rowDim]);
foreach (var colDim in pvtTbl.Columns)
pivotTable.ColumnFields.Add(pivotTable.Fields[colDim]);
pivotTable.ColumGrandTotals = false;
pivotTable.DataOnRows = false;
pivotTable.ColumGrandTotals = false;
pivotTable.RowGrandTotals = false;
if (pvtTbl.PivotData.AggregatorFactory is CompositeAggregatorFactory)
{
var aggrFactories = ((CompositeAggregatorFactory)pvtTbl.PivotData.AggregatorFactory).Factories;
for (int i = 0; i < aggrFactories.Length; i++)
{
var dt = pivotTable.DataFields.Add(pivotTable.Fields[String.Format("value_{0}", i)]);
dt.Function = SuggestFunction(aggrFactories[i]);
string columnName = "";
if (dt.Function == OfficeOpenXml.Table.PivotTable.DataFieldFunctions.Sum)
columnName = ((NReco.PivotData.SumAggregatorFactory)aggrFactories[i]).Field;
else if(dt.Function == OfficeOpenXml.Table.PivotTable.DataFieldFunctions.Average)
columnName = ((NReco.PivotData.AverageAggregatorFactory)aggrFactories[i]).Field;
if (columnNames.ContainsKey(columnName))
dt.Name = columnNames[columnName].ToString();
else
dt.Name = aggrFactories[i].ToString();
}
}
else
{
pivotTable.DataFields.Add(pivotTable.Fields["value"]).Function = SuggestFunction(pvtTbl.PivotData.AggregatorFactory);
}
}
錯誤創建透視表occures同時創造rangePivotTable
var rangePivotTable = wsData.Cells["A1"].LoadFromDataTable(tbl, false);
的LazyTotal模式爲真
var ordersPvtData = new PivotData(dimentionsArray, composite, true);
數據集有200k行。這不是我想的太多。我有8 gb RAM在Windows 10上。 NReco是免費版本。 任何解決方案?這取決於多大每個200K行的是,你的系統上運行的其它應用程序的內存消耗
首先確保您的.net程序作爲x64應用程序執行並可以使用所有可用內存。然後,嘗試減少爲PivotData類配置的維數。 ExcelPivotTableWriter使用EPPlus庫導出到Excel數據透視表,它實際上可以消耗大量RAM,具體取決於數據集的大小。 –
我的應用程序作爲AnyCpu運行 –