2017-05-09 57 views
0

我想通過C#保存一個excel文件,但該文件沒有保存在我使用變量指定的位置。下面是我的代碼有:Excel文件不保存在指定的位置

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); 

//一些代碼

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(); 

我在做什麼錯在這裏?我非常沮喪,因爲這並不是我想要的東西。任何幫助,將不勝感激

+0

你是什麼意思,它沒有被保存在位置?在所需的目錄中沒有找到文件,或者該文件未被覆蓋? – FortyTwo

+0

@mohammedlok在所需的目錄中找不到文件。 – user3240928

+0

如果您調用'xlWorkBook.SaveAs(FileName)',會發生什麼?你會得到一個異常'不能訪問FileName'嗎? – FortyTwo

回答

0

根據@ mohammedlok關於確保沒有內存泄漏的評論,我總是使用try-catch-finally方法來確保excel進程將總是關閉,無論如何。 下面的示例代碼對我有效:

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爲什麼我會對尚不存在的文件執行open方法?將創建新的文件進行編輯,然後我可以保存它嗎? – user3240928

+0

@ user3240928對不起,我以爲你想'另存爲'現有的工作簿。我更新了代碼,它對我有用。希望能幫助到你。 – hackslash47

+0

不適用於我,我得到一個異常'無法訪問excelFilePath'。 – FortyTwo

相關問題