【问题标题】:Close all open excel files except one关闭所有打开的excel文件,除了一个
【发布时间】:2017-08-02 08:29:02
【问题描述】:

祝大家有美好的一天。

我正在尝试将多个 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”(例如,Book1.xlsx 变为 Book11.xlsx)。

我已经试过了:

tempWB.Close();

但它不会关闭文件名中添加“1”的文件。

是否有一个代码可以用来关闭除一个(我的代码中的 finalWB)之外的所有打开的 excel 文件?

非常感谢您的日常帮助。

【问题讨论】:

    标签: c#


    【解决方案1】:

    我认为需要在最后调用app.Workbooks.Close(); 来关闭所有打开的工作簿。

    【讨论】:

    • 你好高里。是的 app.Worbooks.Close() 正在工作,但在此之前,我需要先将我的活动工作簿另存为。非常感谢。
    【解决方案2】:

    我已经成功关闭了所有 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 的回复。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-15
      • 2012-02-17
      • 1970-01-01
      • 2016-04-04
      • 2010-11-21
      • 2021-03-02
      • 1970-01-01
      相关资源
      最近更新 更多