2017-05-09 11 views
0

ExcelファイルをC#で保存しようとしていますが、変数を使用して指定した場所にファイルが保存されていません。以下は、私が持っているコードされています。私はここで何が問題を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

関連する問題