返回首页

内存问题,同时创造大量的excelfile使用OpenXml.Spreadsheet:我需要的是能够做到超过200000行!
问题:创建过程中,吃的所有内存(4GB)。说OU memeory异常的。


public static void InsertDataToExcelFile(SpreadsheetDocument sheet, DataTable table) 

        { 

            sheet.AddWorkbookPart(); 

            sheet.WorkbookPart.Workbook = new Workbook(); 

            sheet.WorkbookPart.Workbook.AppendChild(new Sheets()); 

       WorksheetPart newWorksheetPart = sheet.WorkbookPart.AddNewPart<WorksheetPart>(); 

            newWorksheetPart.Worksheet = new Worksheet(); 

        uint worksheetNumber = 1; 

 

SheetData sheetData = newWorksheetPart.Worksheet.AppendChild(new SheetData()); 

 

int numberOfColumns = table.Columns.Count; 

bool[] IsNumericColumn = new bool[numberOfColumns]; 

Row newRow = sheetData.AppendChild(new Row()); 

Cell newCell; 

foreach (DataRow dr in table.Rows) 

            { 

                newRow = sheetData.AppendChild(new Row()); 

          for (int colInx = 0; colInx < numberOfColumns; colInx++) 

                { 

         string cellValue = dr.ItemArray[colInx].ToString(); 

 

         if (IsNumericColumn[colInx] && !string.IsNullOrEmpty(cellValue))    

               {             

                 newCell = CreateNumericCell(cellValue); 

                } 

                else 

               { 

                        newCell = CreateTextCell(cellValue); 

                       }   

 

                  newRow.AppendChild(newCell); 

                } 

            } 

            newWorksheetPart.Worksheet.Save(); 

           sheet.WorkbookPart.Workbook.GetFirstChild<Sheets>().AppendChild(new Sheet() 

            { 

                Id = sheet.WorkbookPart.GetIdOfPart(newWorksheetPart), 

                SheetId = worksheetNumber++, 

                Name = table.TableName 

            }); 

            sheet.WorkbookPart.Workbook.Save(); 

        }

回答