2

我有一个 Classreport女巫包括一个方法RunExcelReporting。它知道要打开什么工作簿以及通过控制表运行什么例程。

作为测试,我刚刚在控制表中错误地拼写了一个宏。
控制台应用程序创建一个实例report并运行该RunExcelReporting方法,然后在 Excel 显示询问用户是否要保存工作簿的消息框时停止。这对我来说是一个糟糕的中途休息点 - 我宁愿有某种错误消息,或者我希望关闭工作簿而不保存更改。如何修改以下代码以提供帮助?

private void RunExcelReporting(int x) {

    Excel.Application excelApp = null;
    Excel.Workbook book = null;       
    try {

        excelApp = new Excel.Application();
        excelApp.Visible = true;
        book = excelApp.Workbooks.Open((string)MyReportRow["XLfile" + x + "_Path"] + (string)MyReportRow["XLfile" + x + "_Name"]);//,null,true);

            //loop through the four possible macros in each book
        for (int j = 1; j <= 4; j++) {
            if (IsNull(MyReportRow["XLfile" + x + "_Macro" + j]) == false) {
                excelApp.Run((string)MyReportRow["XLfile" + x + "_Macro" + j]);
            }
        }
        book.Close(false, Type.Missing, Type.Missing);
    }
    catch (Exception ex) {
        Console.WriteLine(ex.ToString());
    }
    finally {
        if (book != null) {
            //book.Close(false, Type.Missing, Type.Missing);
            book = null;
        }
        if (excelApp != null) {
            excelApp.Application.Quit();
            excelApp.Quit();
            excelApp = null;
        }
    }
}
4

2 回答 2

1

尝试添加(之前某处book.Close):

excelApp.DisplayAlerts = false
于 2012-12-14T13:45:15.117 回答
0

似乎问题在于Excel没有将错误冒泡到控制台;该错误发生在 Excel 中,即控制台的一个单独进程。

我需要扩展应用程序来解决这个问题。

于 2012-12-23T17:14:11.140 回答