заполнение листа Excel данными asp. net mvc - PullRequest
0 голосов
/ 17 января 2020

Я пишу процедуру для создания и заполнения листа Excel в ASP.NET MVC. Объект, который я хочу перенести на лист, - это список, где T - это структура.

Вам известен какой-либо фрагмент кода, который это делает?

Конструктор, который это делает, :

using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;
… 
 public byte[] ExcelContent;

 public ExportExcel(List<OrdViewModel> ol)
        {
            MemoryStream memstream = new MemoryStream();

            SpreadsheetDocument XlsxDoc = SpreadsheetDocument.Create(memstream, SpreadsheetDocumentType.Workbook);

            WorkbookPart workbookpart = XlsxDoc.AddWorkbookPart();
            workbookpart.Workbook = new Workbook();

            // Add a WorksheetPart to the WorkbookPart.  
            WorksheetPart worksheetPart = workbookpart.AddNewPart<WorksheetPart>();
            worksheetPart.Worksheet = new Worksheet(new SheetData());

            // Add Sheets to the Workbook.  
            Sheets sheets = XlsxDoc.WorkbookPart.Workbook.
                AppendChild<Sheets>(new Sheets());

            Sheet sheet = new Sheet()
            {
                Id = XlsxDoc.WorkbookPart.GetIdOfPart(worksheetPart),
                SheetId = 1,
                Name = "Sheet1"
            };
            sheets.Append(sheet);

            // code here…

            XlsxDoc.Close();

            ExcelContent = memstream.ToArray();
}

1 Ответ

1 голос
/ 17 января 2020

Вы можете использовать мою SwiftExcel библиотеку. Он был разработан, чтобы максимизировать производительность и минимизировать использование памяти при записи в Excel:

public ExportExcel(List<OrdViewModel> ol)
{
    using (var ew = new ExcelWriter("C:\\temp\\test.xlsx"))
    {
        for (var row = 1; row <= ol.Count; row++)
        {
            var item = ol[row-1];
            ew.Write(item.YourProperty1, 1, row);
            ew.Write(item.YourProperty2, 2, row);
            ew.Write(item.YourProperty3, 3, row);
            ew.Write(item.YourProperty4, 4, row);
        }
    }
}
...