2017-07-27 92 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的答复。

相关问题