簡體   English   中英

SaveFileDialog鎖定保存文件位置C#WinForms

[英]SaveFileDialog locking save file location c# winforms

我正在使用“保存文件”對話框來獲取要保存文件的位置。

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,它將正常工作。 幾乎就像“保存文件”對話框在選中該文件位置時那樣,這意味着我以后不能保存到該文件位置了嗎?

任何想法將不勝感激。

嘗試將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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM