SaveFileDialog锁定保存文件位置

本文关键字:位置 保存文件 锁定 SaveFileDialog | 更新日期: 2023-09-27 18:11:47

我正在使用保存文件对话框来获取我要保存文件的位置。

private string GetSaveLocationFromUser(string filter)
{
    string location = string.Empty;
    using (SaveFileDialog sfd = new SaveFileDialog())
    {
        sfd.Filter = filter;
        sfd.FilterIndex = 1;
        sfd.RestoreDirectory = true;
        sfd.InitialDirectory = GetFolderNameDefault();
        sfd.FileName = GetFileDefaultName();
        if (sfd.ShowDialog() == DialogResult.OK)
        {
            location = sfd.FileName;
        }
    }
    return location;
}

这在获取文件位置时工作得很好,但是当我稍后在代码中实际保存文件时,我得到一个异常,说文件已经存在,因此无法保存文件。

下面的代码使用ClosedXML将excel文档保存在选定的位置。

using (XLWorkbook wb = new XLWorkbook())
{
    wb.Worksheets.Add(data, ReportTitle);
    wb.SaveAs(filename);
    isSuccess = true;
}

如果我改变文件名1个字符,例如test.xlsx -> test1.xlsx,它工作正常。这就像保存文件对话框在文件位置上加了一个锁当它被选中时,这意味着我以后不能保存到它?

SaveFileDialog锁定保存文件位置

尝试将Workbook.SaveAsConflictResolution参数设置为xlLocalSessionChanges,以便它始终接受您的更改。比如:

wb.SaveAs(filename, Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookDefault, Type.Missing, Type.Missing, true, false, XlSaveAsAccessMode.xlNoChange, XlSaveConflictResolution.xlLocalSessionChanges, Type.Missing, Type.Missing);