using System.Data; using System.IO; using System.Linq; using Kreta.Core.ConnectionType; using OfficeOpenXml; namespace Kreta.BusinessLogic.Helpers.Nyomtatvanyok.Excel { public class TanuloJegyeiReszletezesExcelbe : BaseNyomtatvanyExcelWithDataSet { public TanuloJegyeiReszletezesExcelbe(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); //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 = "TanuloNev ASC,Tantargy ASC,Datum DESC"; DataTable jegyekReszletezeseDt = 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)) { worksheet = CreateSheet(osztalyNev, sheetIndex, eOrientation.Landscape, true); worksheet.Row(1).Height = 15; worksheet.View.FreezePanes(2, 1); //Fejléc kialakítása AddLabelCell(worksheet, 1, 1, "Tanuló neve", DocheaderStyle1); AddLabelCell(worksheet, 1, 2, "Tantárgy", DocheaderStyle1); AddLabelCell(worksheet, 1, 3, "Értékelő neve", DocheaderStyle1); AddLabelCell(worksheet, 1, 4, "Értékelés", DocheaderStyle1); AddLabelCell(worksheet, 1, 5, "Értékelés témája", DocheaderStyle1); AddLabelCell(worksheet, 1, 6, "Értékelés típusa", DocheaderStyle1); AddLabelCell(worksheet, 1, 7, "Értékelés módja", DocheaderStyle1); AddLabelCell(worksheet, 1, 8, "Értékelés dátuma", DocheaderStyle1); AddLabelCell(worksheet, 1, 9, "Rögzítés dátuma", DocheaderStyle1); } else { worksheet = ExcelPackage.Workbook.Worksheets.Single(x => x.Name == osztalyNev); startRow = worksheet.Dimension.End.Row + 1; } ////Értékelés hozzáadása AddDataTable(worksheet, startRow, 1, jegyekReszletezeseDt, "OsztalyId=" + osztalyId, NormalStyle, HeaderStyle, dtCols: new string[] { "TanuloNev", "Tantargy", "ErtekeloNev", "Osztalyzat", "Tema", "ErtTip", "ErtMod", "Datum", "RogzitesDatum" }); worksheet.Column(1).AutoFit(18); worksheet.Column(2).AutoFit(18); worksheet.Column(3).AutoFit(18); worksheet.Column(4).AutoFit(9); worksheet.Column(5).AutoFit(18); worksheet.Column(6).AutoFit(18); worksheet.Column(7).AutoFit(18); worksheet.Column(8).AutoFit(16); worksheet.Column(9).AutoFit(16); } } }