using System.Data; using System.IO; using System.Linq; using Kreta.Core.ConnectionType; using OfficeOpenXml; namespace Kreta.BusinessLogic.Helpers.Nyomtatvanyok.Excel { public class TanulokMulasztasaiExcel : BaseNyomtatvanyExcelWithDataSet { private bool _elmeletGyakorlat = false; public TanulokMulasztasaiExcel(IConnectionType connectionType, bool isMultisheetExcel = false, string templateFilename = null, bool elmeletGyakorlat = false) : base(connectionType, isMultisheetExcel) { FileInfo exFile = null; if (templateFilename != null) { exFile = new FileInfo(templateFilename); } ExcelPackage = (exFile == null) ? new ExcelPackage() : new ExcelPackage(exFile); _elmeletGyakorlat = elmeletGyakorlat; //Munkalap tulajdonságok beállítása SetWorkbookProperties(); } public override void CreateSheet(DataSet ds, int osztalyId, int sheetIndex = 1) { // Adatforrás összeállítása SetExcelDataSet(ds); DataTable fejlecDt = DataSet.Tables[0]; var dv = DataSet.Tables[1].DefaultView; dv.Sort = "OsztalyNev ASC,TanuloNev ASC"; DataTable mulasztasokDt = dv.ToTable(DataSet.Tables[1].TableName); //Munkalap összeállítása string osztalyNev = fejlecDt.Rows.Cast().First(x => (int)x["OsztalyId"] == osztalyId)["OsztalyNev"].ToString(); ExcelWorksheet worksheet; int startRow = 2; if (ExcelPackage.Workbook.Worksheets.All(x => x.Name != osztalyNev)) { if (_elmeletGyakorlat) { worksheet = CreateSheet(osztalyNev, sheetIndex, eOrientation.Landscape, true); worksheet.Row(1).Height = 15; worksheet.Row(2).Height = 15; worksheet.Row(3).Height = 15; worksheet.View.FreezePanes(4, 2); //Fejléc kialakítása AddLabelRange(worksheet, 1, 1, 3, 1, "Tanuló neve", DocheaderStyleSideBordered); AddLabelRange(worksheet, 1, 2, 3, 2, "Oktatási azonosító", DocheaderStyleSideBordered); AddLabelRange(worksheet, 1, 3, 3, 3, "Osztály", DocheaderStyleSideBordered); AddLabelRange(worksheet, 1, 4, 1, 18, "Gyakorlati", DocheaderStyleSideBordered); AddLabelRange(worksheet, 1, 19, 1, 37, "Elméleti", DocheaderStyleSideBordered); AddLabelRange(worksheet, 1, 38, 2, 48, "Igazolások típusa", DocheaderStyleSideBordered); AddLabelRange(worksheet, 2, 4, 2, 6, "Tanórai hiányzás", DocheaderStyleSideBordered); AddLabelRange(worksheet, 2, 7, 2, 9, "Tanórán kívüli hiányzás", DocheaderStyleSideBordered); AddLabelRange(worksheet, 2, 10, 2, 12, "Tanórai késések száma", DocheaderStyleSideBordered); AddLabelRange(worksheet, 2, 13, 2, 15, "Tanóráról késett percek száma", DocheaderStyleSideBordered); AddLabelRange(worksheet, 2, 16, 2, 18, "Tanóráról késett órák", DocheaderStyleSideBordered); AddLabelRange(worksheet, 2, 19, 2, 21, "Tanórai hiányzás", DocheaderStyleSideBordered); AddLabelRange(worksheet, 2, 22, 2, 24, "Tanórán kívüli hiányzás", DocheaderStyleSideBordered); AddLabelRange(worksheet, 2, 25, 2, 27, "Tanórai késések száma", DocheaderStyleSideBordered); AddLabelRange(worksheet, 2, 28, 2, 30, "Tanóráról késett percek száma", DocheaderStyleSideBordered); AddLabelRange(worksheet, 2, 31, 2, 33, "Tanóráról késett órák", DocheaderStyleSideBordered); AddLabelRange(worksheet, 2, 34, 2, 35, "Hozott hiányzás", DocheaderStyleSideBordered); AddLabelRange(worksheet, 2, 36, 2, 37, "Hozott késett perc", DocheaderStyleSideBordered); for (int i = 0; i < 10; ++i) { AddLabelCell(worksheet, 3, 4 + (i * 3), "Igazolandó", DocheaderStyleSideBordered); AddLabelCell(worksheet, 3, 5 + (i * 3), "Igazolt", DocheaderStyleSideBordered); AddLabelCell(worksheet, 3, 6 + (i * 3), "Igazolatlan", DocheaderStyleSideBordered); } AddLabelCell(worksheet, 3, 34, "Igazolt", DocheaderStyleSideBordered); AddLabelCell(worksheet, 3, 35, "Igazolatlan", DocheaderStyleSideBordered); AddLabelCell(worksheet, 3, 36, "Igazolt", DocheaderStyleSideBordered); AddLabelCell(worksheet, 3, 37, "Igazolatlan", DocheaderStyleSideBordered); AddLabelCell(worksheet, 3, 38, "Orvosi igazolás", DocheaderStyleSideBordered); AddLabelCell(worksheet, 3, 39, "Gondviselői igazolás", DocheaderStyleSideBordered); AddLabelCell(worksheet, 3, 40, "Hivatalos távollét", DocheaderStyleSideBordered); AddLabelCell(worksheet, 3, 41, "Iskolaérdekű távollét", DocheaderStyleSideBordered); AddLabelCell(worksheet, 3, 42, "Szolgáltatói igazolás", DocheaderStyleSideBordered); AddLabelCell(worksheet, 3, 43, "Iskolai engedély", DocheaderStyleSideBordered); AddLabelCell(worksheet, 3, 44, "Pályaválasztási célú igazolás", DocheaderStyleSideBordered); AddLabelCell(worksheet, 3, 45, "Kikérő", DocheaderStyleSideBordered); AddLabelCell(worksheet, 3, 46, "Táppénz", DocheaderStyleSideBordered); AddLabelCell(worksheet, 3, 47, "Hatósági házi karantén", DocheaderStyleSideBordered); AddLabelCell(worksheet, 3, 48, "Egyéb", DocheaderStyleSideBordered); } else { worksheet = CreateSheet(osztalyNev, sheetIndex, eOrientation.Landscape, true); worksheet.Row(1).Height = 15; worksheet.Row(2).Height = 15; worksheet.View.FreezePanes(3, 2); //Fejléc kialakítása AddLabelRange(worksheet, 1, 1, 2, 1, "Tanuló neve", DocheaderStyleSideBordered); AddLabelRange(worksheet, 1, 2, 2, 2, "Oktatási azonosító", DocheaderStyleSideBordered); AddLabelRange(worksheet, 1, 3, 2, 3, "Osztály", DocheaderStyleSideBordered); AddLabelRange(worksheet, 1, 4, 1, 6, "Tanórai hiányzás", DocheaderStyleSideBordered); AddLabelRange(worksheet, 1, 7, 1, 9, "Tanórán kívüli hiányzás", DocheaderStyleSideBordered); AddLabelRange(worksheet, 1, 10, 1, 12, "Tanórai késések száma", DocheaderStyleSideBordered); AddLabelRange(worksheet, 1, 13, 1, 15, "Tanóráról késett percek száma", DocheaderStyleSideBordered); AddLabelRange(worksheet, 1, 16, 1, 18, "Tanóráról késett órák", DocheaderStyleSideBordered); AddLabelRange(worksheet, 1, 19, 1, 20, "Hozott hiányzás", DocheaderStyleSideBordered); AddLabelRange(worksheet, 1, 21, 1, 22, "Hozott késett perc", DocheaderStyleSideBordered); AddLabelRange(worksheet, 1, 23, 1, 33, "Igazolások típusa", DocheaderStyleSideBordered); for (int i = 0; i < 5; ++i) { AddLabelCell(worksheet, 2, 4 + (i * 3), "Igazolandó", DocheaderStyleSideBordered); AddLabelCell(worksheet, 2, 5 + (i * 3), "Igazolt", DocheaderStyleSideBordered); AddLabelCell(worksheet, 2, 6 + (i * 3), "Igazolatlan", DocheaderStyleSideBordered); } AddLabelCell(worksheet, 2, 19, "Igazolt", DocheaderStyleSideBordered); AddLabelCell(worksheet, 2, 20, "Igazolatlan", DocheaderStyleSideBordered); AddLabelCell(worksheet, 2, 21, "Igazolt", DocheaderStyleSideBordered); AddLabelCell(worksheet, 2, 22, "Igazolatlan", DocheaderStyleSideBordered); AddLabelCell(worksheet, 2, 23, "Orvosi igazolás", DocheaderStyleSideBordered); AddLabelCell(worksheet, 2, 24, "Gondviselői igazolás", DocheaderStyleSideBordered); AddLabelCell(worksheet, 2, 25, "Hivatalos távollét", DocheaderStyleSideBordered); AddLabelCell(worksheet, 2, 26, "Iskolaérdekű távollét", DocheaderStyleSideBordered); AddLabelCell(worksheet, 2, 27, "Szolgáltatói igazolás", DocheaderStyleSideBordered); AddLabelCell(worksheet, 2, 28, "Iskolai engedély", DocheaderStyleSideBordered); AddLabelCell(worksheet, 2, 29, "Pályaválasztási célú igazolás", DocheaderStyleSideBordered); AddLabelCell(worksheet, 2, 30, "Kikérő", DocheaderStyleSideBordered); AddLabelCell(worksheet, 2, 31, "Táppénz", DocheaderStyleSideBordered); AddLabelCell(worksheet, 2, 32, "Hatósági házi karantén", DocheaderStyleSideBordered); AddLabelCell(worksheet, 2, 33, "Egyéb", DocheaderStyleSideBordered); } } else { worksheet = ExcelPackage.Workbook.Worksheets.Single(x => x.Name == osztalyNev); } startRow = worksheet.Dimension.End.Row + 1; string[] columns; if (_elmeletGyakorlat) { columns = new string[] { "TanuloNev" , "TanuloOktAzon" , "OsztalyNev" , "TanoraiHianyzasIgazolandoGyakorlati" , "TanoraiHianyzasIgazoltGyakorlati" , "TanoraiHianyzasIgazolatlanGyakorlati" , "TanoranKivuliHianyzasIgazolandoGyakorlati" , "TanoranKivuliHianyzasIgazoltGyakorlati" , "TanoranKivuliHianyzasIgazolatlanGyakorlati" , "TanoraiKesesDarabszamIgazolandoGyakorlati" , "TanoraiKesesDarabszamIgazoltGyakorlati" , "TanoraiKesesDarabszamIgazolatlanGyakorlati" , "TanoraiKesesIgazolandoGyakorlatiPerc" , "TanoraiKesesIgazoltGyakorlatiPerc" , "TanoraiKesesIgazolatlanGyakorlatiPerc" , "SzamitottKesesIgazolandoGyakorlati" , "SzamitottKesesIgazoltGyakorlati" , "SzamitottKesesIgazolatlanGyakorlati" , "TanoraiHianyzasIgazolandoElmeleti" , "TanoraiHianyzasIgazoltElmeleti" , "TanoraiHianyzasIgazolatlanElmeleti" , "TanoranKivuliHianyzasIgazolandoElmeleti" , "TanoranKivuliHianyzasIgazoltElmeleti" , "TanoranKivuliHianyzasIgazolatlanElmeleti" , "TanoraiKesesDarabszamIgazolandoElmeleti" , "TanoraiKesesDarabszamIgazoltElmeleti" , "TanoraiKesesDarabszamIgazolatlanElmeleti" , "TanoraiKesesIgazolandoElmeletiPerc" , "TanoraiKesesIgazoltElmeletiPerc" , "TanoraiKesesIgazolatlanElmeletiPerc" , "SzamitottKesesIgazolandoElmeleti" , "SzamitottKesesIgazoltElmeleti" , "SzamitottKesesIgazolatlanElmeleti" , "HozottIgazoltHianyzas" , "HozottIgazolatlanHianyzas" , "HozottIgazoltHianyzasPerc" , "HozottIgazolatlanKesesPerc" , "OrvosiIgazolas" , "SzuloiIgazolas" , "HivatalosTavolletIgazolas" , "IskolaerdekuTavolletIgazolas" , "SzolgaltatoiIgazolas" , "IskolaiEngedelyIgazolas" , "PalyavalasztasiCeluIgazolas" , "KikeroIgazolas" , "TappenzIgazolas" , "HatosagiHaziKaranten" , "EgyebIgazolas" }; } else { columns = new string[] { "TanuloNev" , "TanuloOktAzon" , "OsztalyNev" , "TanoraiHianyzasIgazolando" , "TanoraiHianyzasIgazolt" , "TanoraiHianyzasIgazolatlan" , "TanoranKivuliHianyzasIgazolando" , "TanoranKivuliHianyzasIgazolt" , "TanoranKivuliHianyzasIgazolatlan" , "TanoraiKesesDarabszamIgazolando" , "TanoraiKesesDarabszamIgazolt" , "TanoraiKesesDarabszamIgazolatlan" , "TanoraiKesesIgazolandoPerc" , "TanoraiKesesIgazoltPerc" , "TanoraiKesesIgazolatlanPerc" , "SzamitottKesesIgazolando" , "SzamitottKesesIgazolt" , "SzamitottKesesIgazolatlan" , "HozottIgazoltHianyzas" , "HozottIgazolatlanHianyzas" , "HozottIgazoltHianyzasPerc" , "HozottIgazolatlanKesesPerc" , "OrvosiIgazolas" , "SzuloiIgazolas" , "HivatalosTavolletIgazolas" , "IskolaerdekuTavolletIgazolas" , "SzolgaltatoiIgazolas" , "IskolaiEngedelyIgazolas" , "PalyavalasztasiCeluIgazolas" , "KikeroIgazolas" , "TappenzIgazolas" , "HatosagiHaziKaranten" , "EgyebIgazolas" }; } AddDataTable(worksheet, startRow, 1, mulasztasokDt, "OsztalyId=" + osztalyId, NormalStyle, HeaderStyle, dtCols: columns); worksheet.Column(1).AutoFit(18); for (var i = 2; i <= mulasztasokDt.Columns.Count; ++i) { worksheet.Column(i).AutoFit(11); } } } }