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; }