From 41cacf62ff4ef8aed8b04bd1ad90a3be4d17756a Mon Sep 17 00:00:00 2001 From: KharchenkoVV Date: Wed, 15 Sep 2021 10:43:46 +0500 Subject: [PATCH] Raw(!!) working OpenXML library code with creating Excel file and writing data --- ConsoleApp1/Program.cs | 92 ++++++++++++++++++++++++++++++------------ 1 file changed, 66 insertions(+), 26 deletions(-) diff --git a/ConsoleApp1/Program.cs b/ConsoleApp1/Program.cs index 05546ee7..5345b3c9 100644 --- a/ConsoleApp1/Program.cs +++ b/ConsoleApp1/Program.cs @@ -9,47 +9,87 @@ using DocumentFormat.OpenXml.Spreadsheet; //using AutoMapper; using Microsoft.EntityFrameworkCore; using System; +using System.IO; +using System.Linq; namespace ConsoleApp1 { + //var options = new DbContextOptionsBuilder() + // .UseNpgsql("Host=localhost;Database=postgres;Username=postgres;Password=q;Persist Security Info=True") + // .Options; + //var context = new AsbCloudDbContext(options); + class Program { static void Main(/*string[] args*/) { - //var options = new DbContextOptionsBuilder() - // .UseNpgsql("Host=localhost;Database=postgres;Username=postgres;Password=q;Persist Security Info=True") - // .Options; - //var context = new AsbCloudDbContext(options); + // source files + using var firstExcel = SpreadsheetDocument.Open(@"D:\excels\excel1.xlsx", true); + using var secondExcel = SpreadsheetDocument.Open(@"D:\excels\excel2.xlsx", true); - var fileNames = new string[] { @"d:\temp\1\book1.xlsx", @"d:\temp\1\book2.xlsx" }; - using var spreadsheetDocument = SpreadsheetDocument.Create(@"d:\temp\1\b.xlsx", SpreadsheetDocumentType.Workbook); - // Add a WorkbookPart and Workbook objects. - WorkbookPart workbookpart = spreadsheetDocument.AddWorkbookPart(); - workbookpart.Workbook = new Workbook(); - // Add a WorksheetPart to the WorkbookPart. - WorksheetPart worksheetPart = workbookpart.AddNewPart(); - worksheetPart.Worksheet = new Worksheet(new SheetData()); - - // Add Sheets to the Workbook. - Sheets sheets = spreadsheetDocument.WorkbookPart.Workbook. - AppendChild(new Sheets()); - - // Append a new worksheet and associate it with the workbook. - Sheet sheet = new Sheet() + // init destination file + using var resultExcel = SpreadsheetDocument.Create(@"D:\excels\result.xlsx", SpreadsheetDocumentType.Workbook); + WorkbookPart resultExcelWorkbookpart = resultExcel.AddWorkbookPart(); + resultExcelWorkbookpart.Workbook = new Workbook { - Id = spreadsheetDocument.WorkbookPart. - GetIdOfPart(worksheetPart), - SheetId = 1, - Name = "mySheetNameISHere!" + Sheets = new Sheets() }; - sheets.Append(sheet); + var resultExcelWorksheetPart = resultExcelWorkbookpart.AddNewPart(); + resultExcelWorksheetPart.Worksheet = new Worksheet(new SheetData()); + resultExcelWorkbookpart.Workbook.Save(); + resultExcel.Close(); + + + foreach (var sheet in firstExcel.WorkbookPart.Workbook.Descendants()) + { + //resultExcel.WorkbookPart.Workbook.Sheets.Append(sheet.CloneNode(true)); // Clone empty sheet + + var firstExcelWorkSheetPart = firstExcel.WorkbookPart.GetPartById(sheet.Id) as WorksheetPart; // get rows from source + var rows = firstExcelWorkSheetPart.Worksheet.Descendants(); // Rows + + } + + + + //resultExcel.Close(); + + + + using (var document = SpreadsheetDocument.Create(@"D:\excels\result123123.xlsx", SpreadsheetDocumentType.Workbook, true)) + { + // Add a WorkbookPart to the document. + var workbookPart = document.AddWorkbookPart(); + workbookPart.Workbook = new Workbook(); + + // Add a WorksheetPart to the WorkbookPart. + var worksheetPart1 = workbookPart.AddNewPart(); + worksheetPart1.Worksheet = new Worksheet(); + var sheets = workbookPart.Workbook.AppendChild(new Sheets()); + + + var sheet = new Sheet() { Id = workbookPart.GetIdOfPart(worksheetPart1), SheetId = 1, Name = "Test Sheet" }; + sheets.Append(sheet); + workbookPart.Workbook.Save(); + } + + using (var document = SpreadsheetDocument.Open(@"D:\excels\result123123.xlsx", true)) + { + var worksheetPart1 = document.WorkbookPart.WorksheetParts.First(); + var sheetData1 = worksheetPart1.Worksheet.AppendChild(new SheetData()); + + for (uint i = 1; i < 10; i++) + { + var row1 = new Row(); + row1.Append(new Cell { CellValue = new CellValue(i.ToString()) }); + sheetData1.AppendChild(row1); + } + } + - spreadsheetDocument.Save(); - spreadsheetDocument.Close(); Console.WriteLine("Done. Press any key to quit."); Console.ReadKey();