С# Нужно сохранять файл пока не сохранит

285
30 октября 2017, 20:56

Есть автоматика на excel на C#, через раз при сохранении выдает ошибку Ошибка

Unhandled Exception: System.Runtime.InteropServices.COMException: Document not s
aved.
   at Microsoft.Office.Interop.Excel._Workbook.SaveAs(Object Filename, Object Fi
leFormat, Object Password, Object WriteResPassword, Object ReadOnlyRecommended,
Object CreateBackup, XlSaveAsAccessMode AccessMode, Object ConflictResolution, O
bject AddToMru, Object TextCodepage, Object TextVisualLayout, Object Local)

Как сохраняю

Workbook.SaveAs(Savefile, Excel.XlFileFormat.xlWorkbookNormal);
Workbook.Close(Type.Missing, Type.Missing, Type.Missing);
oWord.Workbooks.Close();
oWord.Quit();

Нужно сделать, если выдает ошибку то повторить сохранение до тех пор пока не сохранить Почитал что можно сделать через обработку ошибок либо через проверку файла но как я не знаю

Answer 1

Повторять сохранение или нет можно спросить у пользователя программы.

private void buttonOk_Click(object sender, RoutedEventArgs e)
{
    bool isNotSaved = SaveToFile();
    if (isNotSaved)
    {
        while (AskRepeatSaving())
        {
            if (!SaveToFile()) break; 
        }
    }
}
private bool SaveToFile()
{
    try
    {
        //здесь логика сохранения в файл
        //...
        return false;
    }
    catch (Exception ex)
    {
        Debug.WriteLine($"<--Ошибка сохранения в файл: {ex.Message}");
        return true;
    }
}
private bool AskRepeatSaving()
{
    string message = "Возникла ошибка сохранения файла.\nПовторить попытку сохранения?";
    string caption = "Ошибка сохранения файла";
    var result = MessageBox.Show(message, caption,
                MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.Yes);
    return result == MessageBoxResult.Yes;
}
READ ALSO
Анимация в стилях WPF

Анимация в стилях WPF

Столкнулся с проблемой при написании стиля, хочу что-бы при наведении на любой из прямоугольников двигалась картинка (block1) + изменялась прозрачность,...

336
Проблема с microsoft azure AD

Проблема с microsoft azure AD

Здравствуйте, начну с того что я новичок в работе с ms azure, но у меня на работе появилась следующая задача, при помощи azure AD получить список пользователей...

282
Зависает форма c# при чтении com порта

Зависает форма c# при чтении com порта

ЗдравствуйтеЯ здесь новенький, поэтому сразу простите, если что-то оформлю не так

360
Определение Panel в виде отдельного класса

Определение Panel в виде отдельного класса

Создал Panel с кучей элементов, но нужна мне эта панель, для того что бы множить и отображать по необходимости в FlowLayoutPanelВот как сделать эту панель...

270