2016-10-06 2 views
0

파일 저장 대화 상자를 사용하여 파일을 저장할 위치를 가져옵니다.SaveFileDialog 파일 저장 위치 저장 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 잘 작동합니다. 저장 파일 대화 상자가 선택되었을 때 해당 파일 위치에 잠금을 설정하는 것과 거의 같습니다. 따라서 나중에 저장할 수 없습니다.

의견을 보내 주시면 감사하겠습니다.

+0

확인 .SaveAs' 방법의 과부하 및 파일이 덮어 존재하는 경우 일반적으로 나타냅니다 부울 매개 변수가 있는지 .. 나 파일이 존재하는 경우 확인 코드를 작성합니다. . 다음 새 파일을 만들고 저장하기 전에 삭제하십시오. 간단한 수정 .. – MethodMan

+0

나는이 검사를 할 때 파일이 존재하지 않는다고 말하는 것은 이미 운이 없다. 나는 어쨌든 삭제를 시도했는데 아무런 차이가 없었다. – user3284707

답변

0

Workbook.SaveAs 매개 변수를 xlLocalSessionChanges으로 설정하여 항상 변경 내용을 적용하도록하십시오. 같은 뭔가 :

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

OP는 Excel interop를 사용하지 않지만 [ClosedXML] (https://github.com/closedxml/closedxml)을 사용한다고 생각합니다. 지금까지 볼 수 있듯이,'ClosedXML.Excel.XLWorkbook'의'wb.SaveAs()'메소드는 파일 이름 (또는 스트림) 이외의 매개 변수를 가지고 있지 않으며 [소스 코드] (어떤 경우에도 기존 파일을 덮어 씁니다. https://github.com/ClosedXML/ClosedXML/blob/develop/ClosedXML/Excel/XLWorkbook.cs). – haindl