diff --git a/ENI2/Controls/MaerskListControl.xaml.cs b/ENI2/Controls/MaerskListControl.xaml.cs index 0eda6839..572a5788 100644 --- a/ENI2/Controls/MaerskListControl.xaml.cs +++ b/ENI2/Controls/MaerskListControl.xaml.cs @@ -16,6 +16,7 @@ using System.Runtime.InteropServices; using bsmd.database; using ExcelDataReader; using System.Collections.ObjectModel; +using ENI2.Excel; namespace ENI2.Controls { @@ -278,7 +279,25 @@ namespace ENI2.Controls private void buttonExport_Click(object sender, RoutedEventArgs e) { - + // Export of the current collection + SaveFileDialog sfd = new SaveFileDialog() + { + Filter = "Excel Files|*.xls;*.xlsx" + }; + if(sfd.ShowDialog() ?? false) + { + Util.UIHelper.SetBusyState(); + ExcelManager em = new ExcelManager(); + try + { + List exportList = new List(this.maerskDataList); + em.ExportMaersk(exportList, sfd.FileName); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Export failed", MessageBoxButton.OK, MessageBoxImage.Error); + } + } } private async void buttonSave_Click(object sender, RoutedEventArgs e) diff --git a/ENI2/DetailViewControls/OverViewDetailControl.xaml.cs b/ENI2/DetailViewControls/OverViewDetailControl.xaml.cs index a0f1db91..5ffcbeb8 100644 --- a/ENI2/DetailViewControls/OverViewDetailControl.xaml.cs +++ b/ENI2/DetailViewControls/OverViewDetailControl.xaml.cs @@ -800,7 +800,7 @@ namespace ENI2.DetailViewControls { MessageBox.Show(ex.Message, "Export failed", MessageBoxButton.OK, MessageBoxImage.Error); } - } + } } #endregion diff --git a/ENI2/ENI2.csproj b/ENI2/ENI2.csproj index b5972b73..e9efc3aa 100644 --- a/ENI2/ENI2.csproj +++ b/ENI2/ENI2.csproj @@ -254,6 +254,7 @@ + MaerskListControl.xaml diff --git a/ENI2/Excel/ExcelManager.cs b/ENI2/Excel/ExcelManager.cs index ee169071..1ca5f6c8 100644 --- a/ENI2/Excel/ExcelManager.cs +++ b/ENI2/Excel/ExcelManager.cs @@ -80,11 +80,16 @@ namespace ENI2.Excel resultMessage = ""; // Create ExcelWriter - using (ExcelWriter ew = new ExcelWriter(fileName, isRefSheet)) + 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); + } } } diff --git a/ENI2/Excel/ExcelSimpleWriter.cs b/ENI2/Excel/ExcelSimpleWriter.cs new file mode 100644 index 00000000..4f5f377e --- /dev/null +++ b/ENI2/Excel/ExcelSimpleWriter.cs @@ -0,0 +1,59 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +using Microsoft.Office.Interop.Excel; +using System.Runtime.InteropServices; + +using bsmd.database; + +namespace ENI2.Excel +{ + static class ExcelSimpleWriter + { + public static void WriteMaerskList(string filename, List data) + { + Application excelApp = new Application(); + excelApp.DisplayAlerts = false; + excelApp.Visible = false; + Workbook wb = excelApp.Workbooks.Add(XlWBATemplate.xlWBATWorksheet); + + Worksheet ws = wb.Worksheets[1]; + + // ExcelWorkSheet.Cells[r, c] = "R" + r + "C" + c; + + for (int i = 0; i < data.Count; i++) + { + MaerskData md = data[i]; + ws.Cells[i + 1, 1] = md.ColA; + ws.Cells[i + 1, 2] = md.ColB; + ws.Cells[i + 1, 3] = md.ColC; + ws.Cells[i + 1, 4] = md.ColD; + ws.Cells[i + 1, 5] = md.ColE; + ws.Cells[i + 1, 6] = md.ColF; + ws.Cells[i + 1, 7] = md.ColG; + ws.Cells[i + 1, 8] = md.ColH; + ws.Cells[i + 1, 9] = md.ColI; + ws.Cells[i + 1, 10] = md.ColJ; + ws.Cells[i + 1, 11] = md.ColK; + ws.Cells[i + 1, 12] = md.ColL; + ws.Cells[i + 1, 13] = md.ColM ; + ws.Cells[i + 1, 14] = md.Remark; + } + + wb.SaveAs(filename, XlFileFormat.xlOpenXMLWorkbook, Type.Missing, Type.Missing, Type.Missing, + Type.Missing, XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, + Type.Missing, Type.Missing); + wb.Saved = true; + wb.Close(0); + + Marshal.ReleaseComObject(ws); + Marshal.ReleaseComObject(wb); + + excelApp.Quit(); + Marshal.ReleaseComObject(excelApp); + } + } +} diff --git a/ENI2/Excel/ExcelWriter.cs b/ENI2/Excel/ExcelWriter.cs index 6f06015e..817fe971 100644 --- a/ENI2/Excel/ExcelWriter.cs +++ b/ENI2/Excel/ExcelWriter.cs @@ -18,11 +18,9 @@ namespace ENI2.Excel internal class ExcelWriter : ExcelBase { - - #region Construction - public ExcelWriter(string filePath, bool isRefSheet) + public ExcelWriter(bool isRefSheet) { string filename = @"Excel\EU-NoAD-Data-Collecting-Tool-5_0.xlsx"; if (isRefSheet) filename = @"Excel\Reference_Sheet_DE.xlsx"; @@ -31,7 +29,7 @@ namespace ENI2.Excel this._workBook = _excelWorkbooks.Open(refFilePath, 0, true, 5, "", "", false, XlPlatform.xlWindows, "", false, false, 0, false, false, false); this.InitNameFields(); - + } #endregion @@ -194,6 +192,11 @@ namespace ENI2.Excel } + public void WriteMaerskList(List maerskList) + { + + } + #endregion #region private excel field writing diff --git a/bsmd.database/MaerskData.cs b/bsmd.database/MaerskData.cs index e5fb45d1..d5791efe 100644 --- a/bsmd.database/MaerskData.cs +++ b/bsmd.database/MaerskData.cs @@ -37,7 +37,7 @@ namespace bsmd.database [Description("No id")] NO_ID, [Description("Updated")] - UPDATED, + UPDATED, [Description("Requesting id")] REQUESTING_ID, [Description("Id assigned")]