3

我想将页面方向设置为 LandScape,以便从我的 excel Vsto 项目中打印 excel 工作表。从“打印”表单弹出的“打印机首选项”窗口手动设置页面方向。

我需要一些自动化,每次用户发出打印命令时都会将方向设置为 LandScape。

在此处输入图像描述

我注意到,如果我从我的 excel 应用程序中将方向设置为LandScape,那么如果我想从 MS-word 应用程序中打印出来,它会保持不变,反之亦然。所以必须有某种标志,可以从任何简单的 winform 应用程序中更改。

有什么办法可以操纵属性吗?

4

2 回答 2

4

我找不到任何方法可以自定义任何单个打印机的打印机设置。这是适用于我的 EXCEL 应用程序的代码。

CommonData._WORKBOOK 是一个静态工作簿对象

Worksheet ws = CommonData._WORKBOOK.Application.ActiveSheet as Worksheet;

var _with1 = ws.PageSetup;

_with1.Orientation = Microsoft.Office.Interop.Excel.XlPageOrientation.xlLandscape;
CommonData._WORKBOOK.Application.Dialogs[Microsoft.Office.Interop.Excel.XlBuiltInDialog.xlDialogPrint].Show(Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                            Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                            Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                            Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                            Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                            Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
于 2013-02-11T07:32:54.083 回答
0

您可以尝试以下类似的方法应该适合您

public void CustPrinting() 
{
   try 
     {
       strPrint = new StreamReader (filePath);
     try 
       {
         printFont = new Font("Arial", 10);
         PrintDocument pd = new PrintDocument(); 
         pd.PrintPage += new PrintPageEventHandler(pd_PrintPage);
         pd.PrinterSettings.PrinterName = printer;
         // Set the page orientation to landscape.
         pd.DefaultPageSettings.Landscape = true;
         pd.Print();
       } 
     finally 
     {
       strPrint.Close() ;
     }
   } 
   catch(Exception ex)
   { 
     MessageBox.Show(ex.Message);
   }
 }
于 2012-11-02T16:48:48.003 回答