我正在使用xlApp.Dialogs[Excel.XlBuiltInDialog.xlDialogPrint].Show()
向用户显示打印对话框,以打印以编程方式创建的Excel工作簿的内容。
用户单击“确定”后,打印部分工作正常。但是,除了打印之外,程序还会打开并显示Excel的实例。这不是打印预览,而是打开并显示给用户的实际Excel文档。
我的目标是向用户显示打印对话框,允许他们在不显示Excel的情况下进行打印。
我看了here,试图找到某种禁用打开Excel的方法或参数。不幸的是,我发现的是我可以提供带有30个参数的.Show(),但不是哪个参数对应于什么设置。
我无法在SO上找到任何东西,而且我今天的谷歌技能似乎让我失望。
更新:我的代码中的'Excel'是别名:using Excel = Microsoft.Office.Interop.Excel;
我找到了Built-In Dialog Box Argument Lists。看看“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();
答案 0 :(得分:1)
您可以尝试添加
xlApp.Visible = False
后:
xlApp.Dialogs[Excel.XlBuiltInDialog.xlDialogPrint].Show();
我没有测试过,但可能会有效。
但是,您仍然会在后台运行Excel实例 - 要关闭它,您需要调用xlApp.Quit,并且还要注意this KB article中描述的问题。
答案 1 :(得分:1)
这很难看,但您可以在显示对话框之前添加以下行
var last_height = xlApp.Height,
last_width = xlApp.Width;
xlApp.Height = 0;
xlApp.Width = 0;
以及关闭Excel之前的以下内容
xlApp.Visible = false;
xlApp.Height = last_height;
xlApp.Width = last_width;
我是用JScript编写的,但它很容易翻译。