2017-07-27 88 views
0

美好的一天。關閉所有打開的excel文件,除了一個以外

我想將多個excel文件的所有表合併成一個excel文件。我已經成功地做到了用下面的代碼:

string folder = textBox1.Text; 
string[] xlsxfiles = Directory.GetFiles(folder, "*.xlsx"); 
Excel.Application app = new Excel.Application(); 
app.Visible = true; 
Excel.Workbook finalWB = app.Workbooks.Add(""); 
Excel.Workbook tempWB = app.Workbooks.Add(xlsxfiles); 
for (int i = 2; i <= app.Workbooks.Count; i++) 
{ 
    for (int j = 1; j <= app.Workbooks[i].Worksheets.Count; j++) 
    { 
     Excel.Worksheet ws = app.Workbooks[i].Worksheets[j]; 
     ws.Copy(app.Workbooks[1].Worksheets[1]); 
    } 
} 

然而,工作簿「tempWB」仍然是開放的,其中一些得到了他們的文件名「1」結尾添加(egBook1.xlsx變得Book11.xlsx) 。

我已經嘗試過:

tempWB.Close(); 

,但它不與關閉的那些「1」添加到其文件名。

是否有代碼可以用來關閉除一個(我的代碼中的finalWB)之外的所有打開的excel文件?

非常感謝您爲我們提供的幫助。

回答

0

我認爲app.Workbooks.Close();需要在最後調用關閉所有打開的工作簿是否有任何。

+0

嗨Gowri。是的,app.Worbooks.Close()正在工作,但在此之前,我需要首先保存我的活動工作簿。非常感謝你。 – thompogi

0

我已經成功地關閉了所有被保存爲Excel工作表第一活動工作簿,然後運行

app.Workbook.Close() 

我的代碼看起來像下面

finalWB.SaveAs(excelReportSaveas, Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookDefault, Type.Missing, Type.Missing, 
false, false, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, 
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); 

app.Workbooks.Close(); 

謝謝Gowri的答覆。

相關問題