using System; using System.Data; using System.IO; using System.Linq; using Kreta.BusinessLogic.Classes; using Kreta.Core.ConnectionType; using Kreta.Resources; using OfficeOpenXml; namespace Kreta.BusinessLogic.Helpers.Nyomtatvanyok.Excel { public class TanulokBejegyzeseiExcel : BaseNyomtatvanyExcelWithDataSet { public TanulokBejegyzeseiExcel(IConnectionType connectionType, bool isMultisheetExcel = false, string templateFilename = null) : base(connectionType, isMultisheetExcel) { FileInfo exFile = null; if (templateFilename != null) { exFile = new FileInfo(templateFilename); } ExcelPackage = (exFile == null) ? new ExcelPackage() : new ExcelPackage(exFile); SetWorkbookProperties(); } public override void CreateSheet(DataSet ds, int osztalyId, int sheetIndex = 1) { SetExcelDataSet(ds); DataTable fejlecDt = DataSet.Tables[0]; int startRow = 11; string[] columns = new string[] { "Tipus" ,"Szeptember" ,"Oktober" ,"November" ,"December" ,"Januar" ,"Februar" ,"Marcius" ,"Aprilis" ,"Majus" ,"Junius" ,"Felev" ,"Ossz" }; var tanuloList = DataSet.Tables[1].AsEnumerable().GroupBy(r => r.Field("OktAzon")); foreach (var tanulo in tanuloList) { bool first = true; ExcelWorksheet worksheet = null; startRow = 11; foreach (var tanuloDataRow in tanulo) { var tanuloTable = new DataTable(tanuloDataRow["TanuloNeve"].ToString()); var tanuloId = Convert.ToInt32(tanuloDataRow["TanuloId"]); var cellStyles = new CellStyle[] { NormalStyleWrapText }; if (first) { worksheet = CreateSheet($"{tanuloDataRow["TanuloNeve"]} ({tanuloDataRow["OktAzon"]})", sheetIndex, eOrientation.Landscape, true); //Fejléc AddLabelRange(worksheet, 1, 1, 1, 5, ExcelNyomtatvanyResource.TanulokBejegyzeseiTanuloNeve, DocheaderStyleMergedUpperCell); AddLabelRange(worksheet, 1, 6, 1, 7, ExcelNyomtatvanyResource.TanulokBejegyzeseiOktatasiAzonositoja, DocheaderStyleMergedUpperCell); AddLabelRange(worksheet, 1, 8, 1, 9, ExcelNyomtatvanyResource.TanulokBejegyzeseiOsztalya, DocheaderStyleMergedUpperCell); AddLabelRange(worksheet, 1, 10, 1, 11, ExcelNyomtatvanyResource.TanulokBejegyzeseiOsztalynaploSorszama, DocheaderStyleMergedUpperCell); AddLabelRange(worksheet, 1, 12, 1, 13, ExcelNyomtatvanyResource.TanulokBejegyzeseiTorzslapszama, DocheaderStyleMergedUpperCell); AddLabelRange(worksheet, 2, 1, 2, 5, tanuloDataRow["TanuloNeve"].ToString(), DocheaderStyleMergedLowerCell); AddLabelRange(worksheet, 2, 6, 2, 7, tanuloDataRow["OktAzon"].ToString(), DocheaderStyleMergedLowerCell); AddLabelRange(worksheet, 2, 8, 2, 9, fejlecDt.Rows[0]["OsztalyNev"].ToString(), DocheaderStyleMergedLowerCell); AddLabelRange(worksheet, 2, 10, 2, 11, tanuloDataRow["Sorszam"].ToString(), DocheaderStyleMergedLowerCell); AddLabelRange(worksheet, 2, 12, 2, 13, tanuloDataRow["TorzslapSzam"].ToString(), DocheaderStyleMergedLowerCell); AddLabelRange(worksheet, 3, 1, 3, 2, ExcelNyomtatvanyResource.TanulokBejegyzeseiAnyjaSzuleteskoriNeve, DocheaderStyleMergedUpperCell); AddLabelRange(worksheet, 3, 3, 3, 5, ExcelNyomtatvanyResource.TanulokBejegyzeseiSzuletesiHely, DocheaderStyleMergedUpperCell); AddLabelRange(worksheet, 3, 6, 3, 7, ExcelNyomtatvanyResource.TanulokBejegyzeseiSzuletesiIdo, DocheaderStyleMergedUpperCell); AddLabelRange(worksheet, 3, 8, 3, 11, ExcelNyomtatvanyResource.TanulokBejegyzeseiAllampolgarsaga, DocheaderStyleMergedUpperCell); AddLabelRange(worksheet, 3, 12, 3, 13, ExcelNyomtatvanyResource.TanulokBejegyzeseiTajSzama, DocheaderStyleMergedUpperCell); AddLabelRange(worksheet, 4, 1, 4, 2, tanuloDataRow["AnyjaNeve"].ToString(), DocheaderStyleMergedLowerCell); AddLabelRange(worksheet, 4, 3, 4, 5, tanuloDataRow["SzulHely"].ToString(), DocheaderStyleMergedLowerCell); AddLabelRange(worksheet, 4, 6, 4, 7, tanuloDataRow["SzulIdo"].ToString(), DocheaderStyleMergedLowerCell); AddLabelRange(worksheet, 4, 8, 4, 11, tanuloDataRow["Allampolgarsaga"].ToString(), DocheaderStyleMergedLowerCell); AddLabelRange(worksheet, 4, 12, 4, 13, tanuloDataRow["TajSzam"].ToString(), DocheaderStyleMergedLowerCell); AddLabelRange(worksheet, 5, 1, 5, 5, ExcelNyomtatvanyResource.TanulokBejegyzeseiKepzes, DocheaderStyleMergedUpperCell); AddLabelRange(worksheet, 5, 6, 5, 9, ExcelNyomtatvanyResource.TanulokBejegyzeseiDiakigazolvanySzama, DocheaderStyleMergedUpperCell); AddLabelRange(worksheet, 5, 10, 5, 11, ExcelNyomtatvanyResource.TanulokBejegyzeseiBeirasiNaploSzama, DocheaderStyleMergedUpperCell); AddLabelRange(worksheet, 5, 12, 5, 13, ExcelNyomtatvanyResource.TanulokBejegyzeseiKilepesDatuma, DocheaderStyleMergedUpperCell); AddLabelRange(worksheet, 6, 1, 6, 5, tanuloDataRow["Kepzes"].ToString(), DocheaderStyleMergedLowerCell); AddLabelRange(worksheet, 6, 6, 6, 9, tanuloDataRow["DiakIgazolvanySzam"].ToString(), DocheaderStyleMergedLowerCell); AddLabelRange(worksheet, 6, 10, 6, 11, tanuloDataRow["BeirasiNaploSorszam"].ToString(), DocheaderStyleMergedLowerCell); AddLabelRange(worksheet, 6, 12, 6, 13, tanuloDataRow["KilepesDatum"].ToString(), DocheaderStyleMergedLowerCell); AddLabelRange(worksheet, 7, 1, 7, 13, ExcelNyomtatvanyResource.TanulokBejegyzeseiSzocialisEsTanugyiAdatok, DocheaderStyleMergedUpperCell); AddLabelRange(worksheet, 8, 1, 8, 13, tanuloDataRow["SocAdat"].ToString(), DocheaderStyleMergedLowerCell); if (DataSet.Tables[2].AsEnumerable().ToList().Any(r => r.Field("TanuloId") == tanuloId && SDAConvert.ToDateTime(r["KilepesDatum"]) == SDAConvert.ToDateTime(tanuloDataRow["KilepesDatum"]))) { AddLabelRange(worksheet, 10, 1, 10, 1, ExcelNyomtatvanyResource.TanulokBejegyzeseiBejegyzesekSzamaATanevFolyaman, DocheaderStyle1); AddLabelCell(worksheet, 10, 2, ExcelNyomtatvanyResource.TanulokBejegyzeseiSzeptember, DocheaderStyleCenteredWithoutBorder); AddLabelCell(worksheet, 10, 3, ExcelNyomtatvanyResource.TanulokBejegyzeseiOktober, DocheaderStyleCenteredWithoutBorder); AddLabelCell(worksheet, 10, 4, ExcelNyomtatvanyResource.TanulokBejegyzeseiNovember, DocheaderStyleCenteredWithoutBorder); AddLabelCell(worksheet, 10, 5, ExcelNyomtatvanyResource.TanulokBejegyzeseiDecember, DocheaderStyleCenteredWithoutBorder); AddLabelCell(worksheet, 10, 6, ExcelNyomtatvanyResource.TanulokBejegyzeseiJanuar, DocheaderStyleCenteredWithoutBorder); AddLabelCell(worksheet, 10, 7, ExcelNyomtatvanyResource.TanulokBejegyzeseiFebruar, DocheaderStyleCenteredWithoutBorder); AddLabelCell(worksheet, 10, 8, ExcelNyomtatvanyResource.TanulokBejegyzeseiMarcius, DocheaderStyleCenteredWithoutBorder); AddLabelCell(worksheet, 10, 9, ExcelNyomtatvanyResource.TanulokBejegyzeseiAprilis, DocheaderStyleCenteredWithoutBorder); AddLabelCell(worksheet, 10, 10, ExcelNyomtatvanyResource.TanulokBejegyzeseiMajus, DocheaderStyleCenteredWithoutBorder); AddLabelCell(worksheet, 10, 11, ExcelNyomtatvanyResource.TanulokBejegyzeseiJunius, DocheaderStyleCenteredWithoutBorder); AddLabelCell(worksheet, 10, 12, ExcelNyomtatvanyResource.TanulokBejegyzeseiFelev, DocheaderStyleCenteredWithoutBorder); AddLabelCell(worksheet, 10, 13, ExcelNyomtatvanyResource.TanulokBejegyzeseiEvVege, DocheaderStyleCenteredWithoutBorder); //Adatok foreach (var column in DataSet.Tables[2].Columns) { tanuloTable.Columns.Add(column.ToString()); } foreach (DataRow bejegyzesDataRow in DataSet.Tables[2].Rows) { if (Convert.ToInt32(bejegyzesDataRow["TanuloId"]) == tanuloId && SDAConvert.ToDateTime(bejegyzesDataRow["KilepesDatum"]) == SDAConvert.ToDateTime(tanuloDataRow["KilepesDatum"])) { tanuloTable.ImportRow(bejegyzesDataRow); } } AddDataTable(worksheet, startRow, 1, tanuloTable, "", NormalStyleCentered, HeaderStyle, cellStyles: cellStyles, dtCols: columns); startRow += tanuloTable.Rows.Count + 2; } worksheet.Column(1).AutoFit(35); for (var i = 2; i <= columns.Length; ++i) { worksheet.Column(i).AutoFit(15); } first = false; sheetIndex++; } else { AddLabelRange(worksheet, startRow, 1, startRow, 5, ExcelNyomtatvanyResource.TanulokBejegyzeseiTanuloNeve, DocheaderStyleMergedUpperCell); AddLabelRange(worksheet, startRow, 6, startRow, 7, ExcelNyomtatvanyResource.TanulokBejegyzeseiOktatasiAzonositoja, DocheaderStyleMergedUpperCell); AddLabelRange(worksheet, startRow, 8, startRow, 9, ExcelNyomtatvanyResource.TanulokBejegyzeseiOsztalya, DocheaderStyleMergedUpperCell); AddLabelRange(worksheet, startRow, 10, startRow, 13, ExcelNyomtatvanyResource.TanulokBejegyzeseiKilepesDatuma, DocheaderStyleMergedUpperCell); startRow++; AddLabelRange(worksheet, startRow, 1, startRow, 5, tanuloDataRow["TanuloNeve"].ToString(), DocheaderStyleMergedLowerCell); AddLabelRange(worksheet, startRow, 6, startRow, 7, tanuloDataRow["OktAzon"].ToString(), DocheaderStyleMergedLowerCell); AddLabelRange(worksheet, startRow, 8, startRow, 9, tanuloDataRow["AktualisOsztaly"].ToString(), DocheaderStyleMergedLowerCell); AddLabelRange(worksheet, startRow, 10, startRow, 13, tanuloDataRow["KilepesDatum"].ToString(), DocheaderStyleMergedLowerCell); startRow += 2; if (DataSet.Tables[2].AsEnumerable().ToList().Any(r => r.Field("TanuloId") == tanuloId && SDAConvert.ToDateTime(r["KilepesDatum"]) == SDAConvert.ToDateTime(tanuloDataRow["KilepesDatum"]))) { AddLabelCell(worksheet, startRow, 1, ExcelNyomtatvanyResource.TanulokBejegyzeseiBejegyzesekSzamaATanevFolyaman, DocheaderStyle1); AddLabelCell(worksheet, startRow, 2, ExcelNyomtatvanyResource.TanulokBejegyzeseiSzeptember, DocheaderStyleCenteredWithoutBorder); AddLabelCell(worksheet, startRow, 3, ExcelNyomtatvanyResource.TanulokBejegyzeseiOktober, DocheaderStyleCenteredWithoutBorder); AddLabelCell(worksheet, startRow, 4, ExcelNyomtatvanyResource.TanulokBejegyzeseiNovember, DocheaderStyleCenteredWithoutBorder); AddLabelCell(worksheet, startRow, 5, ExcelNyomtatvanyResource.TanulokBejegyzeseiDecember, DocheaderStyleCenteredWithoutBorder); AddLabelCell(worksheet, startRow, 6, ExcelNyomtatvanyResource.TanulokBejegyzeseiJanuar, DocheaderStyleCenteredWithoutBorder); AddLabelCell(worksheet, startRow, 7, ExcelNyomtatvanyResource.TanulokBejegyzeseiFebruar, DocheaderStyleCenteredWithoutBorder); AddLabelCell(worksheet, startRow, 8, ExcelNyomtatvanyResource.TanulokBejegyzeseiMarcius, DocheaderStyleCenteredWithoutBorder); AddLabelCell(worksheet, startRow, 9, ExcelNyomtatvanyResource.TanulokBejegyzeseiAprilis, DocheaderStyleCenteredWithoutBorder); AddLabelCell(worksheet, startRow, 10, ExcelNyomtatvanyResource.TanulokBejegyzeseiMajus, DocheaderStyleCenteredWithoutBorder); AddLabelCell(worksheet, startRow, 11, ExcelNyomtatvanyResource.TanulokBejegyzeseiJunius, DocheaderStyleCenteredWithoutBorder); AddLabelCell(worksheet, startRow, 12, ExcelNyomtatvanyResource.TanulokBejegyzeseiFelev, DocheaderStyleCenteredWithoutBorder); AddLabelCell(worksheet, startRow, 13, ExcelNyomtatvanyResource.TanulokBejegyzeseiEvVege, DocheaderStyleCenteredWithoutBorder); startRow++; //Adatok foreach (var column in DataSet.Tables[2].Columns) { tanuloTable.Columns.Add(column.ToString()); } foreach (DataRow bejegyzesDataRow in DataSet.Tables[2].Rows) { if (Convert.ToInt32(bejegyzesDataRow["TanuloId"]) == tanuloId && SDAConvert.ToDateTime(bejegyzesDataRow["KilepesDatum"]) == SDAConvert.ToDateTime(tanuloDataRow["KilepesDatum"])) { tanuloTable.ImportRow(bejegyzesDataRow); } } AddDataTable(worksheet, startRow, 1, tanuloTable, "", NormalStyleCentered, HeaderStyle, cellStyles: cellStyles, dtCols: columns); startRow += tanuloTable.Rows.Count + 2; } } } } } } }