kreta/Kreta.BusinessLogic/Helpers/Nyomtatvanyok/Excel/TanuloJegyeiReszletezesExcelbe.cs
2024-03-13 00:33:46 +01:00

72 lines
3.4 KiB
C#

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<DataRow>().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);
}
}
}