单击确定后,Excel打印对话框将打开不需要的Excel实例

我正在使用xlApp.Dialogs[Excel.XlBuiltInDialog.xlDialogPrint].Show()向用户显示一个打印对话框,以打印以编程方式创build的Excel工作簿的内容。

打印部分工作正常后用户点击确定。 但是,除了打印之外,该程序还会打开并显示Excel的一个实例。 这不是打印预览,而是打开并显示给用户的实际Excel文档。

我的目标是向用户显示打印对话框,允许他们打印而不显示Excel。

我在这里寻找努力寻找某种方法或参数来禁用打开Excel。 不幸的是,我所发现的是我可以提供.Show()有30个参数,但不是哪个参数对应于什么设置。

我还没有find任何东西,我的谷歌技术似乎没有今天我失败。

更新 :我的代码中的“Excel”是一个别名: using Excel = Microsoft.Office.Interop.Excel;

我能够find内置的对话框参数列表 。 看“xlDialogPrint”我猜这些是进入.Show()的参数。 但是,这个列表中没有任何东西似乎阻止Excel打开。

另一个更新 :最简单的代码来重现行为

 Excel.Application xlApp; Excel.Workbook xlWB; Excel.Worksheet xlWS; xlApp = new Excel.Application(); xlWB = xlApp.Application.Workbooks.Add(); xlWS = xlWB.Sheets[1]; xlWS.Cells[1][1] = "TEST"; xlApp.Dialogs[Excel.XlBuiltInDialog.xlDialogPrint].Show(); 

你可以尝试添加

 xlApp.Visible = False 

后:

 xlApp.Dialogs[Excel.XlBuiltInDialog.xlDialogPrint].Show(); 

我没有testing它,但它可能工作。

但是,您仍然可以在后台运行Excel实例 – 要closures它,您需要调用xlApp.Quit,并了解本知识库文章中描述的问题。

这是丑陋的,但你可以在显示对话框之前添加以下几行

 var last_height = xlApp.Height, last_width = xlApp.Width; xlApp.Height = 0; xlApp.Width = 0; 

和以下closuresExcel之前

 xlApp.Visible = false; xlApp.Height = last_height; xlApp.Width = last_width; 

我用JScript编写,但很容易翻译。