public static void CreateDoc(ExcelInfoClient info) { using (SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Create(info.FileName, SpreadsheetDocumentType.Workbook)) { // Создаем книгу (в ней хранятся листы) WorkbookPart workbookpart = spreadsheetDocument.AddWorkbookPart(); workbookpart.Workbook = new Workbook(); CreateStyles(workbookpart); // Получаем/создаем хранилище текстов для книги SharedStringTablePart shareStringPart = spreadsheetDocument.WorkbookPart.GetPartsOfType <SharedStringTablePart>().Count() > 0 ? spreadsheetDocument.WorkbookPart.GetPartsOfType <SharedStringTablePart>().First() : spreadsheetDocument.WorkbookPart.AddNewPart <SharedStringTablePart>(); // Создаем SharedStringTable, если его нет if (shareStringPart.SharedStringTable == null) { shareStringPart.SharedStringTable = new SharedStringTable(); } // Создаем лист в книгу WorksheetPart worksheetPart = workbookpart.AddNewPart <WorksheetPart>(); worksheetPart.Worksheet = new Worksheet(new SheetData()); // Добавляем лист в книгу Sheets sheets = spreadsheetDocument.WorkbookPart.Workbook.AppendChild <Sheets>(new Sheets()); Sheet sheet = new Sheet() { Id = spreadsheetDocument.WorkbookPart.GetIdOfPart(worksheetPart), SheetId = 1, Name = "Лист" }; sheets.Append(sheet); InsertCellInWorksheet(new ExcelCellParameters { Worksheet = worksheetPart.Worksheet, ShareStringPart = shareStringPart, ColumnName = "A", RowIndex = 1, Text = info.Title, StyleIndex = 2U }); MergeCells(new ExcelMergeParameters { Worksheet = worksheetPart.Worksheet, CellFromName = "A1", CellToName = "C1" }); uint rowIndex = 2; foreach (var pc in info.ComponentManufactures) { InsertCellInWorksheet(new ExcelCellParameters { Worksheet = worksheetPart.Worksheet, ShareStringPart = shareStringPart, ColumnName = "A", RowIndex = rowIndex, //Text = pc.ManufactureName, StyleIndex = 0U }); rowIndex++; //foreach (var component in pc.Components) //{ // InsertCellInWorksheet(new ExcelCellParameters // { // Worksheet = worksheetPart.Worksheet, // ShareStringPart = shareStringPart, // ColumnName = "B", // RowIndex = rowIndex, // Text = component.Item1, // StyleIndex = 1U // }); // InsertCellInWorksheet(new ExcelCellParameters // { // Worksheet = worksheetPart.Worksheet, // ShareStringPart = shareStringPart, // ColumnName = "C", // RowIndex = rowIndex, // Text = component.Item2.ToString(), // StyleIndex = 1U // }); // rowIndex++; //} InsertCellInWorksheet(new ExcelCellParameters { Worksheet = worksheetPart.Worksheet, ShareStringPart = shareStringPart, ColumnName = "A", RowIndex = rowIndex, Text = "Итого", StyleIndex = 0U }); InsertCellInWorksheet(new ExcelCellParameters { Worksheet = worksheetPart.Worksheet, ShareStringPart = shareStringPart, ColumnName = "C", RowIndex = rowIndex, //Text = pc.TotalCount.ToString(), StyleIndex = 0U }); rowIndex++; } workbookpart.Workbook.Save(); } }
public static void CreateDoc(ExcelInfoClient info) { using (SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Create(info.FileName, SpreadsheetDocumentType.Workbook)) { WorkbookPart workbookpart = spreadsheetDocument.AddWorkbookPart(); workbookpart.Workbook = new Workbook(); CreateStyles(workbookpart); SharedStringTablePart shareStringPart = spreadsheetDocument.WorkbookPart.GetPartsOfType <SharedStringTablePart>().Count() > 0 ? spreadsheetDocument.WorkbookPart.GetPartsOfType <SharedStringTablePart>().First() : spreadsheetDocument.WorkbookPart.AddNewPart <SharedStringTablePart>(); if (shareStringPart.SharedStringTable == null) { shareStringPart.SharedStringTable = new SharedStringTable(); } WorksheetPart worksheetPart = workbookpart.AddNewPart <WorksheetPart>(); worksheetPart.Worksheet = new Worksheet(new SheetData()); Sheets sheets = spreadsheetDocument.WorkbookPart.Workbook.AppendChild <Sheets>(new Sheets()); Sheet sheet = new Sheet() { Id = spreadsheetDocument.WorkbookPart.GetIdOfPart(worksheetPart), SheetId = 1, Name = "Лист" }; sheets.Append(sheet); InsertCellInWorksheet(new ExcelCellParameters { Worksheet = worksheetPart.Worksheet, ShareStringPart = shareStringPart, ColumnName = "A", RowIndex = 1, Text = info.Title, StyleIndex = 2U }); MergeCells(new ExcelMergeParameters { Worksheet = worksheetPart.Worksheet, CellFromName = "A1", CellToName = "F1" }); InsertCellInWorksheet(new ExcelCellParameters { Worksheet = worksheetPart.Worksheet, ShareStringPart = shareStringPart, ColumnName = "A", RowIndex = 2, Text = "№", StyleIndex = 0U }); InsertCellInWorksheet(new ExcelCellParameters { Worksheet = worksheetPart.Worksheet, ShareStringPart = shareStringPart, ColumnName = "B", RowIndex = 2, Text = "Название", StyleIndex = 0U }); InsertCellInWorksheet(new ExcelCellParameters { Worksheet = worksheetPart.Worksheet, ShareStringPart = shareStringPart, ColumnName = "C", RowIndex = 2, Text = "Описание", StyleIndex = 0U }); InsertCellInWorksheet(new ExcelCellParameters { Worksheet = worksheetPart.Worksheet, ShareStringPart = shareStringPart, ColumnName = "D", RowIndex = 2, Text = "Цена", StyleIndex = 0U }); uint i = 1; foreach (var service in info.Services) { InsertCellInWorksheet(new ExcelCellParameters { Worksheet = worksheetPart.Worksheet, ShareStringPart = shareStringPart, ColumnName = "A", RowIndex = i + 2, Text = i.ToString(), StyleIndex = 0U }); InsertCellInWorksheet(new ExcelCellParameters { Worksheet = worksheetPart.Worksheet, ShareStringPart = shareStringPart, ColumnName = "B", RowIndex = i + 2, Text = service.ServiceName, StyleIndex = 0U }); InsertCellInWorksheet(new ExcelCellParameters { Worksheet = worksheetPart.Worksheet, ShareStringPart = shareStringPart, ColumnName = "C", RowIndex = i + 2, Text = service.Desc, StyleIndex = 0U }); InsertCellInWorksheet(new ExcelCellParameters { Worksheet = worksheetPart.Worksheet, ShareStringPart = shareStringPart, ColumnName = "D", RowIndex = i + 2, Text = service.Price.ToString(), StyleIndex = 0U }); i++; } workbookpart.Workbook.Save(); } }