2017-05-09 1 views
0

Ich versuche, eine Excel-Datei über C# zu speichern, aber die Datei wird nicht an dem Speicherort gespeichert, den ich mit einer Variablen angegeben habe. Im Folgenden wird der Code ich habe:Excel-Datei Ich speichere nicht am angegebenen Speicherort

Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application(); 

if (xlApp == null) 
{ 
    //MessageBox.Show("Excel is not properly installed!!"); 
    return; 
} 

Excel.Workbook xlWorkBook; 
Excel.Worksheet xlWorkSheet; 
object misValue = System.Reflection.Missing.Value; 

if (!System.IO.File.Exists(FileName)) 
{ 
    xlWorkBook = xlApp.Workbooks.Add(misValue); 
} 
else 
{ 
    xlWorkBook = xlApp.Workbooks.Open(FileName, 0, false, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", true, false, 0, true, 1, 0); 
} 

xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); 

// einige Code

xlApp.DisplayAlerts = false; 
xlWorkBook.SaveAs(FileName, Type.Missing,Type.Missing,Type.Missing,false,Type.Missing,XlSaveAsAccessMode.xlExclusive,Type.Missing,Type.Missing,Type.Missing); 
xlWorkBook.Close(true, FileName, misValue); 
xlApp.Application.Quit(); 
xlApp.Quit(); 

Was mache ich falsch hier? Ich bin darüber hinaus frustriert, dass ich nicht rette, wo ich es möchte. Jede Hilfe würde geschätzt werden

+0

Was meinst du, es wird nicht in der Position gespeichert? Es wird keine Datei im gewünschten Verzeichnis gefunden oder die Datei wird nicht überschrieben. – FortyTwo

+0

@mohammedlok Keine Datei im gewünschten Verzeichnis gefunden. – user3240928

+0

Was passiert, wenn Sie 'xlWorkBook.SaveAs (FileName)' aufrufen? Wird eine Ausnahme ausgelöst? Kann nicht auf FileName zugreifen? – FortyTwo

Antwort

0

Gemäß @ mohammedloks Kommentar über das Sicherstellen, dass es keine Speicherlecks gibt, verwende ich immer eine try-catch-finally-Methode, um sicherzustellen, dass der Excel-Prozess immer geschlossen wird. Der folgende Beispielcode funktionierte für mich:

Application excelApp = new Application(); 
Workbook excelWorkbook = null; 
string excelFilePath = "C:\\Users\\Desktop\\Sample.xlsx"; 

try 
{ 
    //Create a workbook 
    excelWorkbook = excelApp.Workbooks.Add(Type.Missing); 

    //Make and name a worksheet 
    activeWorksheet = excelWorkbook.ActiveSheet; 

    //Write in cell B3 of the worksheet 
    Range r = activeWorksheet.get_Range("B3", Type.Missing); 
    r.Value2 = "This is a sample."; 

    //Save the workbook 
    excelWorkbook.SaveAs(excelFilePath, Type.Missing, Type.Missing, Type.Missing, false, Type.Missing, XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing); 
} 
catch (Exception ex) 
{ 
    throw ex; 
} 
finally 
{ 
    if (excelWorkbook != null) 
    { 
    excelApp.Calculation = XlCalculation.xlCalculationAutomatic; 
    excelApp.DisplayAlerts = false; 
    excelWorkbook.RefreshAll(); 
    excelWorkbook.Close(true, excelFilePath); 
    excelApp.Quit(); 
    } 
} 
+0

@ hacklash47 Warum würde ich die offene Methode für eine Datei tun, die noch nicht existiert? Wird die neue Datei zur Bearbeitung erstellt, kann ich sie dann speichern? – user3240928

+0

@ user3240928 Entschuldigung, ich dachte, Sie wollten ein bestehendes Arbeitsbuch als 'Speichern' speichern. Ich habe den Code aktualisiert und es hat für mich funktioniert. Ich hoffe es hilft. – hackslash47

+0

Funktioniert nicht für mich, ich bekomme eine Ausnahme 'Kann nicht auf ExcelFilePath zugreifen. – FortyTwo

Verwandte Themen