// Copyright (c) 2017- Informatikbüro Daniel Schick // Description: Controller class for reading excel sheets (label-based) using bsmd.database; using log4net; using System; using System.Collections.Generic; using System.IO; namespace ENI2.Excel { public class ExcelManager { private readonly ILog _log = LogManager.GetLogger(typeof(ExcelManager)); public ExcelManager() { Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory); } public bool Import(string filePath, MessageCore core, List classes, out string readMessage) { bool result = false; readMessage = ""; try { using (ExcelReader reader = new ExcelReader(filePath)) { switch (reader.SheetType) { case ExcelReader.SheetTypeEnum.BSMD: { ImportHeader importHeader = new ImportHeader { ImportDate = DateTime.Now }; result = ExcelUtil.ProcessSheet(reader, out readMessage, core, classes); // actual import if (result) { importHeader.MessageCoreId = core.Id.Value; importHeader.Filename = Path.GetFileName(filePath); ReportingParty thisUser = ReportingParty.CurrentReportingParty; importHeader.SenderEmail = thisUser.EMail; importHeader.ReportingPartyId = thisUser.Id; DBManager.Instance.Save(importHeader); // Saving plaintext data (ImportHeader + ImportValues) for each reading List valueList = importHeader.CreateUpdateList(reader.ImportValues); // Bulk save recommended here.. ImportValue.BulkSave(valueList); } break; } case ExcelReader.SheetTypeEnum.DAKOSY: { result = DakosyUtil.ProcessSheet(reader, out readMessage, core, classes); // at this point do not save import data values break; } default: { _log.WarnFormat("Unknown excel sheet type {0}", reader.SheetType); break; } } } } catch (Exception ex) { readMessage = ex.Message; _log.Error(ex); } return result; } internal void Export(string fileName, MessageCore core, List messages, out string resultMessage, bool isRefSheet) { resultMessage = ""; // Create ExcelWriter using (ExcelWriter ew = new ExcelWriter(isRefSheet)) { ew.WriteData(messages, core, out resultMessage, isRefSheet); ew.Save(fileName); } } internal void ExportMaersk(List exportList, string fileName) { ExcelSimpleWriter.WriteMaerskList(fileName, exportList); } } }