public static Hashtable LoadEntriesFromFile(
            KontoutdragInfoForLoad kontoutdragInfoForLoad)
        {
            // Backa inte upp filen innan laddning, eftersom filen inte ändras vid laddning...
            // BackupOrginialFile("Before.Load");

            // Öppna fil först, och ladda, sen ev. spara ändringar, som inte ändrats av laddningen, av filöpnningen
            var kontoUtdragXls = new Hashtable();

            // Todo: Gör om till arraylist, eller lista av dictionary items, för att kunna välja ordning
            #region Öppna fil och hämta rader

            try
            {
                var filePath = kontoutdragInfoForLoad.filePath;
                if (filePath == "")
                {
                    kontoutdragInfoForLoad.excelFileSavePath =
                        filePath = FileOperations.OpenFileOfType("Open file", FileType.xls, ""); // Öppnar dialog
                }

                if (string.IsNullOrEmpty(filePath))
                {
                    return null;
                }

                if (!System.IO.File.Exists(filePath))
                {
                    MessageBox.Show("File: " + filePath + " does not exist.", "File error");
                    return null;
                }

                OpenFileFunctions.OpenExcelSheet(filePath, kontoutdragInfoForLoad.sheetName, kontoUtdragXls, 0);
            }
            catch (Exception fileOpneExcp)
            {
                Console.WriteLine("User cancled or other error: " + fileOpneExcp.Message);

                if (kontoUtdragXls.Count < 1)
                {
                    // throw fileOpneExcp;
                    return null;
                }
            }

            #endregion

            return (Hashtable)kontoUtdragXls[kontoutdragInfoForLoad.sheetName];
        }
        /// <summary>
        /// Sparar till Excel-fil
        /// </summary>
        public static LoadOrSaveResult GetAllEntriesFromExcelFile(
            KontoutdragInfoForLoad kontoutdragInfoForLoad,
            SortedList saveToTable,
            SaldoHolder saldoHolder,
            Hashtable entriesLoadedFromDataStore)
        {
            // Töm alla tidigare entries i minnet om det ska laddas helt ny fil el. likn.
            if (kontoutdragInfoForLoad.clearContentBeforeReadingNewFile)
            {
                saveToTable.Clear();
            }

            // Görs i Ui-handling, UpdateEntriesToSaveMemList();
            // Skapa kontoentries
            // För att se om det laddats något, så UI-uppdateras etc. Så returneras bool om det...
            return SkapaKontoEntries(saveToTable, entriesLoadedFromDataStore, saldoHolder);
        }
        /// <summary>
        /// Uses members in this class
        /// </summary>
        /// <param name="excelFileSavePath">
        /// </param>
        /// <param name="clearContentBeforeReadingNewFile">
        /// </param>
        /// <returns>
        /// The <see cref="bool"/>.
        /// </returns>
        private bool GetAllEntriesFromExcelFile(string excelFileSavePath, bool clearContentBeforeReadingNewFile)
        {
            var statusText = toolStripStatusLabel1.Text = @"Nothing loaded.";
            var changedExcelFileSavePath = Filerefernces._excelFileSavePath;

            // Todo: gör en funktion för denna eller refa med en filnamns och sökvägsklass....
            var kontoutdragInfoForLoad = new KontoutdragInfoForLoad
                                         {
                                             filePath = Filerefernces._excelFileSavePath,
                                             excelFileSavePath = changedExcelFileSavePath,
                                             excelFileSavePathWithoutFileName =
                                                 Filerefernces.ExcelFileSavePathWithoutFileName,
                                             excelFileSaveFileName = Filerefernces._excelFileSaveFileName,
                                             sheetName = SheetName,
                                             clearContentBeforeReadingNewFile = clearContentBeforeReadingNewFile,
                                             somethingChanged = somethingChanged,
                                         };

            // Ladda från fil
            var entriesLoadedFromDataStore = LoadKonton.LoadEntriesFromFile(kontoutdragInfoForLoad);

            // För att se om något laddats från fil
            var somethingLoadedFromFile = entriesLoadedFromDataStore != null && entriesLoadedFromDataStore.Count > 0;

            statusStrip1.Text = statusText;

            // kolla om något laddades från Excel
            if (!somethingLoadedFromFile)
            {
                return false;
            }

            const bool CheckforUnsavedChanges = true;
            var userCanceled = SaveFirstCheck(kontoutdragInfoForLoad, CheckforUnsavedChanges, true);

            if (userCanceled)
            {
                return false;
            }

            var loadResult = LoadKonton.GetAllEntriesFromExcelFile(
                kontoutdragInfoForLoad,
                kontoEntriesHolder.KontoEntries,
                kontoEntriesHolder.SaldoHolder,
                entriesLoadedFromDataStore);

            // Visa text för anv. om hur det gick etc.
            statusText = "No. rows loaded; " + kontoEntriesHolder.KontoEntries.Count + " . Skpped: " + loadResult.skippedOrSaved
                         + ". File loaded; " + kontoutdragInfoForLoad.filePath;

            // Nu har det precis rensats och laddats in nytt
            kontoutdragInfoForLoad.somethingChanged = !CheckforUnsavedChanges;

            // Ev. har pathen ändrats.
            if (excelFileSavePath == string.Empty)
            {
                // Om man lagt till nya rader från annan fil, så spara i den gamla.
            }
            else
            {
                // Har man däremot laddat in nya så ska den sökvägen gälla för sparningar
                Filerefernces._excelFileSavePath = changedExcelFileSavePath;

                // Todo: sätt denna tidigare så att LoadNsave bara gör vad den ska utan UI etc
            }

            // toolStripStatusLabel1.Text = statusText + " Saldon: Allkort:" + saldoAllkort + ", Löne:" + saldoLöne + ", Kredit Ej fakt.:" + saldoAllkortKreditEjFakturerat + ", Kredit fakt.:" + saldoAllkortKreditFakturerat;
            statusStrip1.Text = statusText;

            // If nothing loaded return
            if (!loadResult.somethingLoadedOrSaved)
            {
                return false;
            }

            // Lägg till orginalraden, gör i UI-hanterare
            // Lägg in det som är satt att sparas till minnet (viasa alla _kontoEntries i listview). Även uppdatera färg på text.
            ViewUpdateUi.SetNewItemsListViewFromSortedList(xlsOrginalEntries, kontoEntriesHolder.KontoEntries);
            ViewUpdateUi.SetNewItemsListViewFromSortedList(entriesInToBeSaved, kontoEntriesHolder.KontoEntries);

            return true;
        }
        private bool SaveFirstCheck(
            KontoutdragInfoForLoad kontoutdragInfoForLoad, bool checkforUnsavedChanges, bool somethingLoadedFromFile)
        {
            // Nu har något laddats från fil, kolla då om något ska sparas
            // Save check
            if (checkforUnsavedChanges && somethingLoadedFromFile)
            {
                if (kontoEntriesHolder.KontoEntries.Count > 0)
                {
                    // somethingChanged är alltid false här
                    var userResponse = SaveCheckWithArgs(kontoutdragInfoForLoad, kontoEntriesHolder.KontoEntries,
                        kontoEntriesHolder.SaldoHolder);
                    if (userResponse == DialogResult.Cancel)
                    {
                        return true;
                    }
                }
                else
                {
                    kontoutdragInfoForLoad.somethingChanged = false;
                }
            }

            return false;
        }
        public static DialogResult SaveCheckWithArgs(
            KontoutdragInfoForLoad kontoutdragInfoForSave, SortedList kontoEntries, SaldoHolder saldoHolder)
        {
            var saveOr = DialogResult.None;
            if (kontoutdragInfoForSave.somethingChanged)
            {
                saveOr = MessageBox.Show(@"Läget ej sparat! Spara nu?", @"Spara?", MessageBoxButtons.YesNoCancel);

                // Cancel
                if (saveOr == DialogResult.Yes)
                {
                    SaveKonton.Save
                        (kontoutdragInfoForSave, kontoEntries, saldoHolder);
                }
            }

            return saveOr;
        }