protected override void RunActualProcess()
        {
            string      fn  = CombineForRaw("2019-02-27-b_EV_HA_pro_Trafokreis.xlsx");
            ExcelHelper eh  = new ExcelHelper(Services.Logger, MyStage);
            var         arr = eh.ExtractDataFromExcel2(fn, 1, "A1", "AL4000", out var _);
            var         headerToColumnDict = new Dictionary <string, int>();

            for (var i = 0; i < arr.GetLength(1); i++)
            {
                var o = arr[0, i];

                if (o == null)
                {
                    throw new Exception("was null");
                }

                if (!headerToColumnDict.ContainsKey(o.ToString()))
                {
                    headerToColumnDict.Add(o.ToString(), i);
                }
            }

            var db = Services.SqlConnectionPreparer.GetDatabaseConnection(Stage.Raw, Constants.PresentSlice);

            db.RecreateTable <TrafoKreisImport>();
            db.BeginTransaction();
            for (var row = 1; row < arr.GetLength(0); row++)
            {
                if (arr[row, headerToColumnDict["U_OBJ_ID_I"]] == null)
                {
                    continue;
                }

                var a = new TrafoKreisImport();
                TransferFields(arr, headerToColumnDict, row, a);
                db.Save(a);
            }

            db.CompleteTransaction();
        }
        protected override void RunActualProcess()
        {
            var arr = ExcelHelper.ExtractDataFromExcel(@"U:\SimZukunft\RawDataForMerging\2019-02-27-b_EV_HA_pro_Trafokreis.xlsx", 1, "A1", "AL4000");
            var headerToColumnDict = new Dictionary <string, int>();

            for (var i = 0; i < arr.GetLength(1) - 1; i++)
            {
                var o = arr[1, i + 1];

                if (o == null)
                {
                    throw new Exception("was null");
                }

                if (!headerToColumnDict.ContainsKey(o.ToString()))
                {
                    headerToColumnDict.Add(o.ToString(), i + 1);
                }
            }

            SqlConnection.RecreateTable <TrafoKreisImport>(Stage.Raw, Constants.PresentSlice);

            var db = SqlConnection.GetDatabaseConnection(Stage.Raw, Constants.PresentSlice).Database;

            db.BeginTransaction();
            for (var row = 2; row < arr.GetLength(0); row++)
            {
                if (arr[row, headerToColumnDict["U_OBJ_ID_I"]] == null)
                {
                    continue;
                }

                var a = new TrafoKreisImport();
                TransferFields(arr, headerToColumnDict, row, a);
                db.Save(a);
            }

            db.CompleteTransaction();
        }
 // ReSharper disable once FunctionComplexityOverflow
 private static void TransferFields([NotNull][ItemNotNull] object[,] arr, [NotNull] Dictionary <string, int> hdict, int row, [NotNull] TrafoKreisImport a)
 {
     a.U_STRASSE1 = Helpers.GetString(arr[row, hdict["U_STRASSE1"]]);
     a.U_STR_NR_I = Helpers.GetStringNotNull(arr[row, hdict["U_STR_NR_I"]]);
     a.DESCRIPTIO = Helpers.GetStringNotNull(arr[row, hdict["DESCRIPTIO"]]);
     a.U_EGID_ISE = Helpers.GetInt(arr[row, hdict["U_EGID_ISE"]]);
     a.U_OBJ_ID_I = Helpers.GetInt(arr[row, hdict["U_OBJ_ID_I"]]);
     a.U_TRAFOKRE = Helpers.GetStringNotNull(arr[row, hdict["U_TRAFOKRE"]]);
     a.HKOORD     = Helpers.GetDouble(arr[row, hdict["HKOORD"]]) ?? throw new Exception("Value was null");
     a.VKOORD     = Helpers.GetDouble(arr[row, hdict["VKOORD"]]) ?? throw new Exception("Value was null");
     a.u_Nr_Dez_E = Helpers.GetString(arr[row, hdict["u_Nr_Dez_E"]]);
 }