/// <summary> /// сохранить как отдельный файл /// </summary> /// <param name="rang"></param> internal string SaveAsFile(DataRange rang, string fileName = null) { try { f.Cursor = Cursors.WaitCursor; if (fileName == null) { SaveFileDialog sf = new SaveFileDialog(); sf.InitialDirectory = Vars.Options.LastDirectory; sf.AddExtension = true; sf.FileName = rang.Name; //sf.Filter = "Файл Excel (*.xlsx)|*.xlsx"; sf.Filter += "Файл csv (*.csv)|*.csv"; if (sf.ShowDialog(f) == DialogResult.OK) { Vars.Options.LastDirectory = Path.GetDirectoryName(sf.FileName); DataRangeSerializer.SerializeFile(rang, sf.FileName); rang.FilePath = sf.FileName; return(sf.FileName); } sf.Dispose(); return(null); } else { DataRangeSerializer.SerializeFile(rang, fileName); rang.FilePath = fileName; return(fileName); } } catch (Exception e) { string msg = e.InnerException != null ? e.InnerException.Message : e.Message; _ = MessageBox.Show(this.f, $"Не удалось сохранить файл, причина:\r\n{msg}", "Сохранение файла", MessageBoxButtons.OK, MessageBoxIcon.Error); return(null); } finally { f.Cursor = Cursors.Default; } }
/// <summary> /// Открыть файл /// </summary> /// <param name="form"></param> /// <returns></returns> internal DataRange OpenFile(Form form = null) { if (form == null) { form = f; } OpenFileDialog of = new OpenFileDialog(); of.InitialDirectory = Vars.Options.LastDirectory; of.Multiselect = true; of.Filter = "Все файлы|*.*"; of.Filter += "|Файл Excel (*.xlsx)|*.xlsx"; of.Filter += "|Файл csv (*.csv)|*.csv"; if (of.ShowDialog(form) == DialogResult.OK) { foreach (string file in of.FileNames) { try { f.Cursor = Cursors.WaitCursor; DataRange rang = DataRangeSerializer.DeserializeFile(file, null); rang.FilePath = file; rang.Name = Path.GetFileNameWithoutExtension(file); Vars.Options.LastDirectory = Path.GetDirectoryName(file); return(rang); } catch (Exception ex) { _ = MessageBox.Show(form, ex.Message, "Открытие файла " + file, MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { f.Cursor = Cursors.Default; } } } of.Dispose(); return(null); }