From 9ead1274bb1bf4cb9da1c9724a266b3d03bdb041 Mon Sep 17 00:00:00 2001 From: Daniel Schick Date: Thu, 24 Aug 2023 10:48:44 +0200 Subject: [PATCH] added functionality to import ships by excel sheet --- docs/Liegeplätze_sample_format.xlsx | Bin 0 -> 10192 bytes docs/Schiffe_sample_format.xlsx | Bin 0 -> 9585 bytes src/RoleEditor/MainWindow.xaml.cs | 76 +++++++++++++++++++++++++++- 3 files changed, 75 insertions(+), 1 deletion(-) create mode 100644 docs/Liegeplätze_sample_format.xlsx create mode 100644 docs/Schiffe_sample_format.xlsx diff --git a/docs/Liegeplätze_sample_format.xlsx b/docs/Liegeplätze_sample_format.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..a7e81c20abd8a52f8fba135185ccaaa1c4645c3e GIT binary patch literal 10192 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 JPx importShipList = new(); + int bCounter = 0; + int pCounter = 0; + + try + { + do + { + while (reader.Read()) + { + if (reader.FieldCount < 4) + { + throw new InvalidDataException("Sheet must have at least 4 Columns of data"); + } + + if (reader.IsDBNull(0) && reader.IsDBNull(1)) continue; + string ship_name = ""; + if (!reader.IsDBNull(0)) ship_name = reader.GetString(0); + if (ship_name.Equals("Name", StringComparison.OrdinalIgnoreCase)) continue; + + // find ship in existing list + if (_ships.Any(predicate: x => (x.Name != null) && x.Name.Equals(ship_name, StringComparison.OrdinalIgnoreCase))) + continue; + + Ship s = new(); + s.Name = ship_name; + + if (!reader.IsDBNull(1)) + s.IMO = (int) reader.GetDouble(1); + if (!reader.IsDBNull(2)) + s.Length = reader.GetDouble(2); + if(!reader.IsDBNull(3)) + s.Width = reader.GetDouble(3); + + await s.Save(_dbManager); + _ships.Add(s); + bCounter++; + + } + } while (reader.NextResult()); + + if ((pCounter > 0) || (bCounter > 0)) + { + MessageBox.Show($"Imported {bCounter} berths and added {pCounter} participants while doing so"); + } + + } + catch (Exception ex) + { + MessageBox.Show("Error reading Excel: " + ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error); + } + } + + stream.Close(); + + } } #endregion