diff --git a/ENI2/App.config b/ENI2/App.config
index 902864d7..25c82edd 100644
--- a/ENI2/App.config
+++ b/ENI2/App.config
@@ -123,6 +123,10 @@
+
+
+
+
diff --git a/ENI2/DetailViewControls/BorderPoliceDetailControl.xaml.cs b/ENI2/DetailViewControls/BorderPoliceDetailControl.xaml.cs
index 7aecb28e..91608b6f 100644
--- a/ENI2/DetailViewControls/BorderPoliceDetailControl.xaml.cs
+++ b/ENI2/DetailViewControls/BorderPoliceDetailControl.xaml.cs
@@ -11,7 +11,7 @@ using System.Windows.Controls;
using ENI2.EditControls;
using ENI2.Util;
using ENI2.Locode;
-using ExcelDataReader;
+using ClosedXML.Excel;
using bsmd.database;
using System.Windows.Media.Imaging;
using System.Linq;
@@ -1049,72 +1049,67 @@ namespace ENI2.DetailViewControls
};
if (ofd.ShowDialog() ?? false)
{
- FileStream stream;
try
{
- stream = File.Open(ofd.FileName, FileMode.Open, FileAccess.Read);
+ using (var workbook = new XLWorkbook(ofd.FileName))
+ {
+ var worksheet = workbook.Worksheet(1); // Get first worksheet
+ var rows = worksheet.RangeUsed().RowsUsed().Skip(1); // Skip header row if present
+
+ List importCrew = new List();
+
+ foreach (var row in rows)
+ {
+ if (row.RowNumber() > worksheet.RangeUsed().RowCount()) break;
+
+ // Check if we have at least 13 columns
+ if (worksheet.RangeUsed().ColumnCount() < 13)
+ {
+ throw new InvalidDataException("Sheet must have 13 columns of data");
+ }
+
+ CREW crew = new CREW();
+
+ // Check if first two cells are empty
+ if (row.Cell(1).IsEmpty() && row.Cell(2).IsEmpty()) continue;
+
+ if (!row.Cell(1).IsEmpty()) crew.CrewMemberLastName = row.Cell(1).GetString().Clean();
+ if (crew.CrewMemberLastName?.Equals("Family Name") == true || string.IsNullOrWhiteSpace(crew.CrewMemberLastName)) continue;
+
+ if (!row.Cell(2).IsEmpty()) crew.CrewMemberFirstName = row.Cell(2).GetString().Clean();
+ if (!row.Cell(3).IsEmpty()) crew.CrewMemberGender = GlobalStructures.ParseGender(row.Cell(3).GetString());
+ if (!row.Cell(4).IsEmpty()) crew.CrewMemberDuty = row.Cell(4).GetString().Clean();
+ if (!row.Cell(5).IsEmpty()) crew.CrewMemberNationality = row.Cell(5).GetString().Substring(0, 2).ToUpper();
+ if (!row.Cell(6).IsEmpty()) crew.CrewMemberPlaceOfBirth = row.Cell(6).GetString().Clean();
+ if (!row.Cell(7).IsEmpty()) crew.CrewMemberCountryOfBirth = row.Cell(7).GetString().Substring(0, 2).ToUpper();
+ if (!row.Cell(8).IsEmpty()) crew.CrewMemberDateOfBirth = row.Cell(8).GetDateTime();
+ if (!row.Cell(9).IsEmpty()) crew.CrewMemberIdentityDocumentType = GlobalStructures.ReadIdentityDocumentType(row.Cell(9).GetString());
+ if (!row.Cell(10).IsEmpty()) crew.CrewMemberIdentityDocumentId = row.Cell(10).GetString().Clean();
+ if (!row.Cell(11).IsEmpty()) crew.CrewMemberIdentityDocumentIssuingState = row.Cell(11).GetString().Substring(0, 2).ToUpper();
+ if (!row.Cell(12).IsEmpty()) crew.CrewMemberIdentityDocumentExpiryDate = row.Cell(12).GetDateTime();
+ if (!row.Cell(13).IsEmpty()) crew.CrewMemberVisaNumber = row.Cell(13).GetString().Clean();
+
+ crew.MessageHeader = this._crewMessage;
+ crew.IsDirty = true;
+ crew.Identifier = CREW.GetNewIdentifier(this._crewMessage.Elements);
+ this._crewMessage.Elements.Add(crew);
+ importCrew.Add(crew);
+ }
+
+ if (importCrew.Count > 0)
+ {
+ this.dataGridCrewList.Items.Refresh();
+ this.SublistElementChanged(Message.NotificationClass.CREWA);
+ MessageBox.Show(String.Format(Properties.Resources.textCrewImported, importCrew.Count), Properties.Resources.textCaptionInformation, MessageBoxButton.OK, MessageBoxImage.Information);
+ }
+ }
}
catch (Exception ex)
{
- MessageBox.Show(ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
- return;
+ MessageBox.Show("Error reading Excel: " + ex.Message, Properties.Resources.textCaptionError, MessageBoxButton.OK, MessageBoxImage.Error);
}
-
- using (IExcelDataReader reader = ExcelReaderFactory.CreateReader(stream))
- {
- List importCrew = new List();
-
- try
- {
- do
- {
- while (reader.Read())
- {
- if(reader.FieldCount < 13)
- {
- throw new InvalidDataException("Sheet must have 13 columns of data");
- }
- CREW crew = new CREW();
- if (reader.IsDBNull(0) && reader.IsDBNull(1)) continue;
- if (!reader.IsDBNull(0)) crew.CrewMemberLastName = reader.GetString(0).Clean();
- if (crew.CrewMemberLastName.Equals("Family Name") || (crew.CrewMemberLastName.Trim().Length == 0)) continue;
- if (!reader.IsDBNull(1)) crew.CrewMemberFirstName = reader.GetString(1).Clean();
- if (!reader.IsDBNull(2)) crew.CrewMemberGender = GlobalStructures.ParseGender(reader.GetString(2));
- if (!reader.IsDBNull(3)) crew.CrewMemberDuty = reader.GetString(3).Clean();
- if (!reader.IsDBNull(4)) crew.CrewMemberNationality = reader.GetString(4).Substring(0, 2).ToUpper();
- if (!reader.IsDBNull(5)) crew.CrewMemberPlaceOfBirth = reader.GetString(5).Clean();
- if (!reader.IsDBNull(6)) crew.CrewMemberCountryOfBirth = reader.GetString(6).Substring(0, 2).ToUpper();
- if (!reader.IsDBNull(7)) crew.CrewMemberDateOfBirth = reader.GetDateTime(7);
- if (!reader.IsDBNull(8)) crew.CrewMemberIdentityDocumentType = GlobalStructures.ReadIdentityDocumentType(reader.GetString(8));
- if (!reader.IsDBNull(9)) crew.CrewMemberIdentityDocumentId = reader.ReadAsString(9).Clean();
- if (!reader.IsDBNull(10)) crew.CrewMemberIdentityDocumentIssuingState = reader.GetString(10).Substring(0, 2).ToUpper();
- if (!reader.IsDBNull(11)) crew.CrewMemberIdentityDocumentExpiryDate = reader.GetDateTime(11);
- if (!reader.IsDBNull(12)) crew.CrewMemberVisaNumber = reader.ReadAsString(12).Clean();
-
- crew.MessageHeader = this._crewMessage;
- crew.IsDirty = true;
- crew.Identifier = CREW.GetNewIdentifier(this._crewMessage.Elements);
- this._crewMessage.Elements.Add(crew);
- importCrew.Add(crew);
- }
- } while (reader.NextResult());
- }
- catch (Exception ex)
- {
- MessageBox.Show("Error reading Excel: " + ex.Message, Properties.Resources.textCaptionError, MessageBoxButton.OK, MessageBoxImage.Error);
- }
-
- if (importCrew.Count > 0)
- {
- this.dataGridCrewList.Items.Refresh();
- this.SublistElementChanged(Message.NotificationClass.CREWA);
- MessageBox.Show(String.Format(Properties.Resources.textCrewImported, importCrew.Count), Properties.Resources.textCaptionInformation, MessageBoxButton.OK, MessageBoxImage.Information);
- }
- }
-
- stream.Close();
}
- }
+ }
private void buttonImportExcelCrewDeparture_Click(object sender, RoutedEventArgs e)
{
@@ -1124,74 +1119,68 @@ namespace ENI2.DetailViewControls
};
if (ofd.ShowDialog() ?? false)
{
- FileStream stream;
try
{
- stream = File.Open(ofd.FileName, FileMode.Open, FileAccess.Read);
+ using (var workbook = new XLWorkbook(ofd.FileName))
+ {
+ var worksheet = workbook.Worksheet(1); // Get first worksheet
+ var rows = worksheet.RangeUsed().RowsUsed().Skip(1); // Skip header row if present
+
+ List importCrew = new List();
+
+ foreach (var row in rows)
+ {
+ if (row.RowNumber() > worksheet.RangeUsed().RowCount()) break;
+
+ // Check if we have at least 13 columns
+ if (worksheet.RangeUsed().ColumnCount() < 13)
+ {
+ throw new InvalidDataException("Sheet must have 13 columns of data");
+ }
+
+ CREWD crew = new CREWD();
+ crew.IsDeparture = true;
+
+ // Check if first two cells are empty
+ if (row.Cell(1).IsEmpty() && row.Cell(2).IsEmpty()) continue;
+
+ if (!row.Cell(1).IsEmpty()) crew.CrewMemberLastName = row.Cell(1).GetString().Clean();
+ if (crew.CrewMemberLastName?.Equals("Family Name") == true || string.IsNullOrWhiteSpace(crew.CrewMemberLastName)) continue;
+
+ if (!row.Cell(2).IsEmpty()) crew.CrewMemberFirstName = row.Cell(2).GetString().Clean();
+ if (!row.Cell(3).IsEmpty()) crew.CrewMemberGender = GlobalStructures.ParseGender(row.Cell(3).GetString());
+ if (!row.Cell(4).IsEmpty()) crew.CrewMemberDuty = row.Cell(4).GetString().Clean();
+ if (!row.Cell(5).IsEmpty()) crew.CrewMemberNationality = row.Cell(5).GetString().Substring(0, 2).ToUpper();
+ if (!row.Cell(6).IsEmpty()) crew.CrewMemberPlaceOfBirth = row.Cell(6).GetString().Clean();
+ if (!row.Cell(7).IsEmpty()) crew.CrewMemberCountryOfBirth = row.Cell(7).GetString().Substring(0, 2).ToUpper();
+ if (!row.Cell(8).IsEmpty()) crew.CrewMemberDateOfBirth = row.Cell(8).GetDateTime();
+ if (!row.Cell(9).IsEmpty()) crew.CrewMemberIdentityDocumentType = GlobalStructures.ReadIdentityDocumentType(row.Cell(9).GetString());
+ if (!row.Cell(10).IsEmpty()) crew.CrewMemberIdentityDocumentId = row.Cell(10).GetString().Clean();
+ if (!row.Cell(11).IsEmpty()) crew.CrewMemberIdentityDocumentIssuingState = row.Cell(11).GetString().Substring(0, 2).ToUpper();
+ if (!row.Cell(12).IsEmpty()) crew.CrewMemberIdentityDocumentExpiryDate = row.Cell(12).GetDateTime();
+ if (!row.Cell(13).IsEmpty()) crew.CrewMemberVisaNumber = row.Cell(13).GetString().Clean();
+
+ crew.MessageHeader = this._crewdMessage;
+ crew.IsDirty = true;
+ crew.Identifier = CREWD.GetNewIdentifier(this._crewdMessage.Elements);
+ this._crewdMessage.Elements.Add(crew);
+ importCrew.Add(crew);
+ }
+
+ if (importCrew.Count > 0)
+ {
+ this.dataGridCrewListDeparture.Items.Refresh();
+ this.SublistElementChanged(Message.NotificationClass.CREWD);
+ MessageBox.Show(String.Format(Properties.Resources.textCrewImported, importCrew.Count), Properties.Resources.textCaptionInformation, MessageBoxButton.OK, MessageBoxImage.Information);
+ }
+ }
}
catch (Exception ex)
{
- MessageBox.Show(ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
- return;
+ MessageBox.Show("Error reading Excel: " + ex.Message, Properties.Resources.textCaptionError, MessageBoxButton.OK, MessageBoxImage.Error);
}
-
- using (IExcelDataReader reader = ExcelReaderFactory.CreateReader(stream))
- {
- List importCrew = new List();
-
- try
- {
- do
- {
- while (reader.Read())
- {
- if (reader.FieldCount < 13)
- {
- throw new InvalidDataException("Sheet must have 13 columns of data");
- }
- CREWD crew = new CREWD();
- crew.IsDeparture = true;
-
- if (reader.IsDBNull(0) && reader.IsDBNull(1)) continue;
- if (!reader.IsDBNull(0)) crew.CrewMemberLastName = reader.GetString(0);
- if (crew.CrewMemberLastName.Equals("Family Name") || (crew.CrewMemberLastName.Trim().Length == 0)) continue;
- if (!reader.IsDBNull(1)) crew.CrewMemberFirstName = reader.GetString(1);
- if (!reader.IsDBNull(2)) crew.CrewMemberGender = GlobalStructures.ParseGender(reader.GetString(2));
- if (!reader.IsDBNull(3)) crew.CrewMemberDuty = reader.GetString(3).Clean();
- if (!reader.IsDBNull(4)) crew.CrewMemberNationality = reader.GetString(4).Substring(0, 2).ToUpper();
- if (!reader.IsDBNull(5)) crew.CrewMemberPlaceOfBirth = reader.GetString(5);
- if (!reader.IsDBNull(6)) crew.CrewMemberCountryOfBirth = reader.GetString(6).Substring(0, 2).ToUpper();
- if (!reader.IsDBNull(7)) crew.CrewMemberDateOfBirth = reader.GetDateTime(7);
- if (!reader.IsDBNull(8)) crew.CrewMemberIdentityDocumentType = GlobalStructures.ReadIdentityDocumentType(reader.GetString(8));
- if (!reader.IsDBNull(9)) crew.CrewMemberIdentityDocumentId = reader.ReadAsString(9);
- if (!reader.IsDBNull(10)) crew.CrewMemberIdentityDocumentIssuingState = reader.GetString(10).Substring(0, 2).ToUpper();
- if (!reader.IsDBNull(11)) crew.CrewMemberIdentityDocumentExpiryDate = reader.GetDateTime(11);
- if (!reader.IsDBNull(12)) crew.CrewMemberVisaNumber = reader.ReadAsString(12);
-
- crew.MessageHeader = this._crewdMessage;
- crew.IsDirty = true;
- crew.Identifier = CREWD.GetNewIdentifier(this._crewdMessage.Elements);
- this._crewdMessage.Elements.Add(crew);
- importCrew.Add(crew);
- }
- } while (reader.NextResult());
- }
- catch (Exception ex)
- {
- MessageBox.Show("Error reading Excel: " + ex.Message, Properties.Resources.textCaptionError, MessageBoxButton.OK, MessageBoxImage.Error);
- }
-
- if (importCrew.Count > 0)
- {
- this.dataGridCrewListDeparture.Items.Refresh();
- this.SublistElementChanged(Message.NotificationClass.CREWD);
- MessageBox.Show(String.Format(Properties.Resources.textCrewImported, importCrew.Count), Properties.Resources.textCaptionInformation, MessageBoxButton.OK, MessageBoxImage.Information);
- }
- }
-
- stream.Close();
}
- }
+ }
private void buttonImportExcelPassenger_Click(object sender, RoutedEventArgs e)
{
@@ -1201,80 +1190,73 @@ namespace ENI2.DetailViewControls
};
if (ofd.ShowDialog() ?? false)
{
- FileStream stream;
try
{
- stream = File.Open(ofd.FileName, FileMode.Open, FileAccess.Read);
+ using (var workbook = new XLWorkbook(ofd.FileName))
+ {
+ var worksheet = workbook.Worksheet(1);
+ var rows = worksheet.RangeUsed().RowsUsed().Skip(1); // Skip header row if present
+
+ List importPassenger = new List();
+
+ foreach (var row in rows)
+ {
+ if (row.RowNumber() > worksheet.RangeUsed().RowCount()) break;
+
+ if (worksheet.RangeUsed().ColumnCount() < 17)
+ {
+ throw new InvalidDataException("Sheet must have 17 columns of data");
+ }
+
+ PAS pas = new PAS();
+
+ if (row.Cell(1).IsEmpty() && row.Cell(2).IsEmpty()) continue;
+
+ if (!row.Cell(1).IsEmpty()) pas.PassengerLastName = row.Cell(1).GetString().Clean();
+ if (pas.PassengerLastName?.Equals("Family Name") == true || string.IsNullOrWhiteSpace(pas.PassengerLastName)) continue;
+
+ if (!row.Cell(2).IsEmpty()) pas.PassengerFirstName = row.Cell(2).GetString().Clean();
+ if (!row.Cell(3).IsEmpty()) pas.PassengerGender = GlobalStructures.ParseGender(row.Cell(3).GetString());
+ if (!row.Cell(4).IsEmpty()) pas.PassengerPortOfEmbarkation = row.Cell(4).GetString().Clean();
+ if (LocodeDB.PortNameFromLocode(pas.PassengerPortOfEmbarkation) == null)
+ pas.PassengerPortOfEmbarkation = null;
+ if (!row.Cell(5).IsEmpty()) pas.PassengerPortOfDisembarkation = row.Cell(5).GetString().Clean();
+ if (LocodeDB.PortNameFromLocode(pas.PassengerPortOfDisembarkation) == null)
+ pas.PassengerPortOfDisembarkation = null;
+ if (!row.Cell(6).IsEmpty()) pas.PassengerInTransit = GlobalStructures.ReadBoolean(row.Cell(6).GetString());
+ if (!row.Cell(7).IsEmpty()) pas.PassengerNationality = row.Cell(7).GetString().Substring(0, 2).ToUpper();
+ if (!row.Cell(8).IsEmpty()) pas.PassengerPlaceOfBirth = row.Cell(8).GetString().Clean();
+ if (!row.Cell(9).IsEmpty()) pas.PassengerCountryOfBirth = row.Cell(9).GetString().Substring(0, 2).ToUpper().Clean();
+ if (!row.Cell(10).IsEmpty()) pas.PassengerDateOfBirth = row.Cell(10).GetDateTime();
+ if (!row.Cell(11).IsEmpty()) pas.PassengerIdentityDocumentType = GlobalStructures.ReadIdentityDocumentType(row.Cell(11).GetString());
+ if (!row.Cell(12).IsEmpty()) pas.PassengerIdentityDocumentId = row.Cell(12).GetString().Clean();
+ if (!row.Cell(13).IsEmpty()) pas.PassengerIdentityDocumentIssuingState = row.Cell(13).GetString().Substring(0, 2).ToUpper();
+ if (!row.Cell(14).IsEmpty()) pas.PassengerIdentityDocumentExpiryDate = row.Cell(14).GetDateTime();
+ if (!row.Cell(15).IsEmpty()) pas.PassengerVisaNumber = row.Cell(15).GetString().Clean();
+ if (!row.Cell(16).IsEmpty()) pas.EmergencyCare = row.Cell(16).GetString().Clean();
+ if (!row.Cell(17).IsEmpty()) pas.EmergencyContactNumber = row.Cell(17).GetString().Clean();
+
+ pas.MessageHeader = this._pasMessage;
+ pas.IsDirty = true;
+ pas.Identifier = PAS.GetNewIdentifier(this._pasMessage.Elements);
+ this._pasMessage.Elements.Add(pas);
+ importPassenger.Add(pas);
+ }
+
+ if (importPassenger.Count > 0)
+ {
+ this.dataGridPassengerList.Items.Refresh();
+ this.SublistElementChanged(Message.NotificationClass.PASA);
+ MessageBox.Show(String.Format(Properties.Resources.textPassengerImported, importPassenger.Count), Properties.Resources.textCaptionInformation, MessageBoxButton.OK, MessageBoxImage.Information);
+ }
+ }
}
catch (Exception ex)
{
- MessageBox.Show(ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
- return;
+ MessageBox.Show("Error reading Excel: " + ex.Message, Properties.Resources.textCaptionError, MessageBoxButton.OK, MessageBoxImage.Error);
}
-
- using (var reader = ExcelReaderFactory.CreateReader(stream))
- {
- List importPassenger = new List();
-
- try
- {
- do
- {
- while (reader.Read())
- {
- if (((IExcelDataReader)reader).FieldCount < 17)
- {
- throw new InvalidDataException("Sheet must have 17 columns of data");
- }
-
- PAS pas = new PAS();
- if (reader.IsDBNull(0) && reader.IsDBNull(1)) continue;
- if (!reader.IsDBNull(0)) pas.PassengerLastName = reader.GetValue(0).ToString().Clean();
- if (pas.PassengerLastName.Equals("Family Name") || (pas.PassengerLastName.Trim().Length == 0)) continue;
- if (!reader.IsDBNull(1)) pas.PassengerFirstName = reader.GetValue(1).ToString().Clean();
- if (!reader.IsDBNull(2)) pas.PassengerGender = GlobalStructures.ParseGender(reader.GetString(2));
- if (!reader.IsDBNull(3)) pas.PassengerPortOfEmbarkation = reader.GetString(3).Clean();
- if (LocodeDB.PortNameFromLocode(pas.PassengerPortOfEmbarkation) == null)
- pas.PassengerPortOfEmbarkation = null;
- if (!reader.IsDBNull(4)) pas.PassengerPortOfDisembarkation = reader.GetString(4).Clean();
- if (LocodeDB.PortNameFromLocode(pas.PassengerPortOfDisembarkation) == null)
- pas.PassengerPortOfDisembarkation = null;
- if (!reader.IsDBNull(5)) pas.PassengerInTransit = GlobalStructures.ReadBoolean(reader.GetString(5));
- if (!reader.IsDBNull(6)) pas.PassengerNationality = reader.GetString(6).Substring(0, 2).ToUpper();
- if (!reader.IsDBNull(7)) pas.PassengerPlaceOfBirth = reader.GetString(7).Clean();
- if (!reader.IsDBNull(8)) pas.PassengerCountryOfBirth = reader.GetString(8).Substring(0, 2).ToUpper().Clean();
- if (!reader.IsDBNull(9)) pas.PassengerDateOfBirth = reader.GetDateTime(9);
- if (!reader.IsDBNull(10)) pas.PassengerIdentityDocumentType = GlobalStructures.ReadIdentityDocumentType(reader.GetString(10));
- if (!reader.IsDBNull(11)) pas.PassengerIdentityDocumentId = reader.ReadAsString(11).Clean();
- if (!reader.IsDBNull(12)) pas.PassengerIdentityDocumentIssuingState = reader.GetString(12).Substring(0, 2).ToUpper();
- if (!reader.IsDBNull(13)) pas.PassengerIdentityDocumentExpiryDate = reader.GetDateTime(13);
- if (!reader.IsDBNull(14)) pas.PassengerVisaNumber = reader.ReadAsString(14).Clean();
- if (!reader.IsDBNull(15)) pas.EmergencyCare = reader.GetString(15).Clean();
- if (!reader.IsDBNull(16)) pas.EmergencyContactNumber = reader.ReadAsString(16).Clean();
-
- pas.MessageHeader = this._pasMessage;
- pas.IsDirty = true;
- pas.Identifier = PAS.GetNewIdentifier(this._pasMessage.Elements);
- this._pasMessage.Elements.Add(pas);
- importPassenger.Add(pas);
- }
- } while (reader.NextResult());
- }
- catch (Exception ex)
- {
- MessageBox.Show("Error reading Excel: " + ex.Message, Properties.Resources.textCaptionError, MessageBoxButton.OK, MessageBoxImage.Error);
- }
-
- if (importPassenger.Count > 0)
- {
- this.dataGridPassengerList.Items.Refresh();
- this.SublistElementChanged(Message.NotificationClass.PASA);
- MessageBox.Show(String.Format(Properties.Resources.textPassengerImported, importPassenger.Count), Properties.Resources.textCaptionInformation, MessageBoxButton.OK, MessageBoxImage.Information);
- }
- }
- stream.Close();
}
- }
+ }
private void buttonImportExcelPassengerDeparture_Click(object sender, RoutedEventArgs e)
{
@@ -1284,80 +1266,73 @@ namespace ENI2.DetailViewControls
};
if (ofd.ShowDialog() ?? false)
{
- FileStream stream;
try
{
- stream = File.Open(ofd.FileName, FileMode.Open, FileAccess.Read);
+ using (var workbook = new XLWorkbook(ofd.FileName))
+ {
+ var worksheet = workbook.Worksheet(1);
+ var rows = worksheet.RangeUsed().RowsUsed().Skip(1); // Skip header row if present
+
+ List importPassenger = new List();
+
+ foreach (var row in rows)
+ {
+ if (row.RowNumber() > worksheet.RangeUsed().RowCount()) break;
+
+ if (worksheet.RangeUsed().ColumnCount() < 17)
+ {
+ throw new InvalidDataException("Sheet must have 17 columns of data");
+ }
+
+ PASD pas = new PASD();
+
+ if (row.Cell(1).IsEmpty() && row.Cell(2).IsEmpty()) continue;
+
+ if (!row.Cell(1).IsEmpty()) pas.PassengerLastName = row.Cell(1).GetString().Clean();
+ if (pas.PassengerLastName?.Equals("Family Name") == true || string.IsNullOrWhiteSpace(pas.PassengerLastName)) continue;
+
+ if (!row.Cell(2).IsEmpty()) pas.PassengerFirstName = row.Cell(2).GetString().Clean();
+ if (!row.Cell(3).IsEmpty()) pas.PassengerGender = GlobalStructures.ParseGender(row.Cell(3).GetString());
+ if (!row.Cell(4).IsEmpty()) pas.PassengerPortOfEmbarkation = row.Cell(4).GetString().Clean();
+ if (LocodeDB.PortNameFromLocode(pas.PassengerPortOfEmbarkation) == null)
+ pas.PassengerPortOfEmbarkation = null;
+ if (!row.Cell(5).IsEmpty()) pas.PassengerPortOfDisembarkation = row.Cell(5).GetString().Clean();
+ if (LocodeDB.PortNameFromLocode(pas.PassengerPortOfDisembarkation) == null)
+ pas.PassengerPortOfDisembarkation = null;
+ if (!row.Cell(6).IsEmpty()) pas.PassengerInTransit = GlobalStructures.ReadBoolean(row.Cell(6).GetString());
+ if (!row.Cell(7).IsEmpty()) pas.PassengerNationality = row.Cell(7).GetString().Substring(0, 2).ToUpper();
+ if (!row.Cell(8).IsEmpty()) pas.PassengerPlaceOfBirth = row.Cell(8).GetString().Clean();
+ if (!row.Cell(9).IsEmpty()) pas.PassengerCountryOfBirth = row.Cell(9).GetString().Substring(0, 2).ToUpper();
+ if (!row.Cell(10).IsEmpty()) pas.PassengerDateOfBirth = row.Cell(10).GetDateTime();
+ if (!row.Cell(11).IsEmpty()) pas.PassengerIdentityDocumentType = GlobalStructures.ReadIdentityDocumentType(row.Cell(11).GetString());
+ if (!row.Cell(12).IsEmpty()) pas.PassengerIdentityDocumentId = row.Cell(12).GetString().Clean();
+ if (!row.Cell(13).IsEmpty()) pas.PassengerIdentityDocumentIssuingState = row.Cell(13).GetString().Substring(0, 2).ToUpper();
+ if (!row.Cell(14).IsEmpty()) pas.PassengerIdentityDocumentExpiryDate = row.Cell(14).GetDateTime();
+ if (!row.Cell(15).IsEmpty()) pas.PassengerVisaNumber = row.Cell(15).GetString().Clean();
+ if (!row.Cell(16).IsEmpty()) pas.EmergencyCare = row.Cell(16).GetString().Clean();
+ if (!row.Cell(17).IsEmpty()) pas.EmergencyContactNumber = row.Cell(17).GetString().Clean();
+
+ pas.MessageHeader = this._pasdMessage;
+ pas.IsDirty = true;
+ pas.Identifier = PASD.GetNewIdentifier(this._pasdMessage.Elements);
+ this._pasdMessage.Elements.Add(pas);
+ importPassenger.Add(pas);
+ }
+
+ if (importPassenger.Count > 0)
+ {
+ this.dataGridPassengerListDeparture.Items.Refresh();
+ this.SublistElementChanged(Message.NotificationClass.PASD);
+ MessageBox.Show(String.Format(Properties.Resources.textPassengerImported, importPassenger.Count), Properties.Resources.textCaptionInformation, MessageBoxButton.OK, MessageBoxImage.Information);
+ }
+ }
}
catch (Exception ex)
{
- MessageBox.Show(ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
- return;
+ MessageBox.Show("Error reading Excel: " + ex.Message, Properties.Resources.textCaptionError, MessageBoxButton.OK, MessageBoxImage.Error);
}
-
- using (var reader = ExcelReaderFactory.CreateReader(stream))
- {
- List importPassenger = new List();
-
- try
- {
- do
- {
- while (reader.Read())
- {
- if (((IExcelDataReader)reader).FieldCount < 17)
- {
- throw new InvalidDataException("Sheet must have 17 columns of data");
- }
-
- PASD pas = new PASD();
- if (reader.IsDBNull(0) && reader.IsDBNull(1)) continue;
- if (!reader.IsDBNull(0)) pas.PassengerLastName = reader.GetValue(0).ToString();
- if (pas.PassengerLastName.Equals("Family Name") || (pas.PassengerLastName.Trim().Length == 0)) continue;
- if (!reader.IsDBNull(1)) pas.PassengerFirstName = reader.GetValue(1).ToString();
- if (!reader.IsDBNull(2)) pas.PassengerGender = GlobalStructures.ParseGender(reader.GetString(2));
- if (!reader.IsDBNull(3)) pas.PassengerPortOfEmbarkation = reader.GetString(3);
- if (LocodeDB.PortNameFromLocode(pas.PassengerPortOfEmbarkation) == null)
- pas.PassengerPortOfEmbarkation = null;
- if (!reader.IsDBNull(4)) pas.PassengerPortOfDisembarkation = reader.GetString(4);
- if (LocodeDB.PortNameFromLocode(pas.PassengerPortOfDisembarkation) == null)
- pas.PassengerPortOfDisembarkation = null;
- if (!reader.IsDBNull(5)) pas.PassengerInTransit = GlobalStructures.ReadBoolean(reader.GetString(5));
- if (!reader.IsDBNull(6)) pas.PassengerNationality = reader.GetString(6).Substring(0, 2).ToUpper();
- if (!reader.IsDBNull(7)) pas.PassengerPlaceOfBirth = reader.GetString(7);
- if (!reader.IsDBNull(8)) pas.PassengerCountryOfBirth = reader.GetString(8).Substring(0, 2).ToUpper();
- if (!reader.IsDBNull(9)) pas.PassengerDateOfBirth = reader.GetDateTime(9);
- if (!reader.IsDBNull(10)) pas.PassengerIdentityDocumentType = GlobalStructures.ReadIdentityDocumentType(reader.GetString(10));
- if (!reader.IsDBNull(11)) pas.PassengerIdentityDocumentId = reader.ReadAsString(11);
- if (!reader.IsDBNull(12)) pas.PassengerIdentityDocumentIssuingState = reader.GetString(12).Substring(0, 2).ToUpper();
- if (!reader.IsDBNull(13)) pas.PassengerIdentityDocumentExpiryDate = reader.GetDateTime(13);
- if (!reader.IsDBNull(14)) pas.PassengerVisaNumber = reader.ReadAsString(14);
- if (!reader.IsDBNull(15)) pas.EmergencyCare = reader.GetString(15);
- if (!reader.IsDBNull(16)) pas.EmergencyContactNumber = reader.ReadAsString(16);
-
- pas.MessageHeader = this._pasMessage;
- pas.IsDirty = true;
- pas.Identifier = PASD.GetNewIdentifier(this._pasdMessage.Elements);
- this._pasdMessage.Elements.Add(pas);
- importPassenger.Add(pas);
- }
- } while (reader.NextResult());
- }
- catch (Exception ex)
- {
- MessageBox.Show("Error reading Excel: " + ex.Message, Properties.Resources.textCaptionError, MessageBoxButton.OK, MessageBoxImage.Error);
- }
-
- if (importPassenger.Count > 0)
- {
- this.dataGridPassengerListDeparture.Items.Refresh();
- this.SublistElementChanged(Message.NotificationClass.PASD);
- MessageBox.Show(String.Format(Properties.Resources.textPassengerImported, importPassenger.Count), Properties.Resources.textCaptionInformation, MessageBoxButton.OK, MessageBoxImage.Information);
- }
- }
- stream.Close();
}
- }
+ }
#endregion
diff --git a/ENI2/ENI2.csproj b/ENI2/ENI2.csproj
index 0d005756..165b7209 100644
--- a/ENI2/ENI2.csproj
+++ b/ENI2/ENI2.csproj
@@ -134,9 +134,24 @@
..\code.ruleset
+
+ packages\ClosedXML.0.105.0\lib\netstandard2.0\ClosedXML.dll
+
+
+ packages\ClosedXML.Parser.2.0.0\lib\netstandard2.0\ClosedXML.Parser.dll
+
+
+ packages\DocumentFormat.OpenXml.3.1.1\lib\net46\DocumentFormat.OpenXml.dll
+
+
+ packages\DocumentFormat.OpenXml.Framework.3.1.1\lib\net46\DocumentFormat.OpenXml.Framework.dll
+
packages\ExcelDataReader.3.8.0\lib\net462\ExcelDataReader.dll
+
+ packages\ExcelNumberFormat.1.1.0\lib\net20\ExcelNumberFormat.dll
+
packages\log4net.3.2.0\lib\net462\log4net.dll
@@ -146,6 +161,9 @@
packages\Microsoft.Bcl.Cryptography.9.0.9\lib\net462\Microsoft.Bcl.Cryptography.dll
+
+ packages\Microsoft.Bcl.HashCode.1.1.1\lib\net461\Microsoft.Bcl.HashCode.dll
+
packages\Microsoft.Extensions.DependencyInjection.9.0.9\lib\net462\Microsoft.Extensions.DependencyInjection.dll
@@ -204,6 +222,12 @@
packages\PDFsharp.6.2.2\lib\netstandard2.0\PdfSharp.WPFonts.dll
+
+ packages\RBush.Signed.4.0.0\lib\net47\RBush.dll
+
+
+ packages\SixLabors.Fonts.1.0.0\lib\netstandard2.0\SixLabors.Fonts.dll
+
packages\System.Buffers.4.6.1\lib\net462\System.Buffers.dll
diff --git a/ENI2/packages.config b/ENI2/packages.config
index a5639ee8..a7fde4a9 100644
--- a/ENI2/packages.config
+++ b/ENI2/packages.config
@@ -1,10 +1,16 @@
+
+
+
+
+
+
@@ -14,6 +20,8 @@
+
+