C# 對Excel文檔打印時的頁面設置


 

1、對打印頁面的朝向,頁寬,頁高進行設置

參考源碼[1]

using Excel = Microsoft.Office.Interop.Excel;
Excel.Application tmpExcel = new Excel.ApplicationClass();
Excel.Workbook tmpbook = tmpExcel.Workbooks.Open(tmppath, 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);  //表格的權限設定,如只讀,密碼,權限

//以下是添加新的sheet Excel.Worksheet objsheet = (Excel.Worksheet)tmpbook.Worksheets.Add(Type.Missing, Type.Missing, Type.Missing); objsheet.PageSetup.Orientation = XlPageOrientation.xlLandscape;//頁面方向橫向 objsheet.PageSetup.Zoom = false; //打印時頁面設置,必須設置為false,下面的二行頁高,頁寬才有效 objsheet.PageSetup.FitToPagesTall = 1; //頁高 objsheet.PageSetup.FitToPagesWide = 1; //頁寬 objsheet.PageSetup.Zoom = 75;//打印時頁面設置,縮放比例 objsheet.PageSetup.TopMargin = 0; //上邊距為0 objsheet.PageSetup.BottomMargin = 0; //下邊距為0 objsheet.PageSetup.LeftMargin = 0; //左邊距為0 objsheet.PageSetup.RightMargin = 0; //右邊距為0 objsheet.PageSetup.CenterHorizontally = true;//水平居中

 

示例代碼2:

exce.Application.Workbooks.Add(true);
Workbookbooks=(Excel.Workbook)exce.Workbooks[1];
Excel.Worksheetsheets=(Excel.Worksheet)books.Worksheets[1];
exce.Cells.VerticalAlignment=2;//單元格文字垂直居中
sheets.Cells.Font.Name="宋體";
sheets.Cells.Font.Size=11;

//設置表格標題 sheets.Cells[1,1]="正在生成表格,請稍候.....警告:在生成期間,請不要編輯單元格"; exce.get_Range("A1","P1").MergeCells=true;//合並單元格 exce.get_Range("a1","a1").HorizontalAlignment=3;//水平居中 exce.get_Range("a1","a1").Font.Name="黑體"; exce.get_Range("a1","a1").Font.Size=20; exce.get_Range("a1","a1").Font.Bold=true; exce.get_Range("A2","P2").MergeCells=true; sheets.Cells[2,1]="部門:"+treeView1.SelectedNode.FullPath+ "(共計:"+RowCount.ToString()+"項)"; //設置表格值 ....... exce.get_Range("a3","p3").HorizontalAlignment=3;//列名稱居中 sheets.Columns.AutoFit();//設置最合適列寬 ...... exce.get_Range("A3",ENDSELECT).Borders.LineStyle=1;//設置選中單元格的網格線 sheets.Cells.Select(); sheets.Columns.AutoFit();//再次設置最合適列寬 sheets.Cells[1,1]="總帳"; sheets.Cells[2,1]="部門:"+treeView1.SelectedNode.FullPath+ "(共計:"+RowCount.ToString()+"項,合計數量:"+ Numer.ToString()+"合計金額:"+jine.ToString("C2")+"元)"; ENDSELECT="A"+(RowCount+3); exce.get_Range("A3",ENDSELECT).HorizontalAlignment=3;//設置序號列居中 ENDSELECT="G"+(RowCount+3); exce.get_Range("G4",ENDSELECT).NumberFormatLocal="#,##0.00_";//設置金額列為貨幣式 exce.get_Range("B4","B4").Select(); exce.ActiveWindow.FreezePanes=true;//凍結窗口
//頁面設置 exce.ActiveWindow.DisplayGridlines=false;//不顯示網格線 sheets.DisplayAutomaticPageBreaks=true;//顯示分頁線 sheets.PageSetup.CenterFooter="第&P頁,共&N頁"; sheets.PageSetup.TopMargin=exce.InchesToPoints(0.590551181102362);//上1.5 sheets.PageSetup.BottomMargin=exce.InchesToPoints(0.590551181102362);//下1.5 sheets.PageSetup.LeftMargin=exce.InchesToPoints(0.78740157480315);//左邊距2 sheets.PageSetup.RightMargin=exce.InchesToPoints(0.393700787401575);//右邊距1 sheets.PageSetup.HeaderMargin=exce.InchesToPoints(0.393700787401575);//頁眉1 sheets.PageSetup.FooterMargin=exce.InchesToPoints(0.393700787401575);//頁腳1 sheets.PageSetup.CenterHorizontally=true;//水平居中 sheets.PageSetup.PrintTitleRows="$1:$3";//頂端標題行 sheets.PageSetup.PaperSize=Excel.XlPaperSize.xlPaperA3;//.xlPaperB4;//紙張大小 sheets.PageSetup.Orientation=Excel.XlPageOrientation.xlLandscape;//紙張方向.橫向

 

 

2、打印選項及打印文檔[2]

打印Excel文檔是一個很常見的操作,但有時候我們會碰到各種不同的打印需求, 例如只打印一個Excel工作表的其中一部分,或打印時每頁都有表頭,或把工作表中超出1頁所有內容打印到1頁上等等,這時我們需要對Excel的打印選 項進行設置。這篇文章主要是分享如何使用Excel組件及C#來設置一些常見的Excel打印選項及打印Excel文檔。

下面這個Excel工作表共含有17行,20列數據:

                       

目標:將第7, 8行的所有數據打印到一頁上,並打印表頭(標題行)。

創建一個WinForm項目,使用如下命名空間:

using System; using System.Drawing.Printing; using System.Windows.Forms; using Spire.Xls;

 

步驟1創建一個新的workbook對象並加載Excel文檔。

Workbook workbook = new Workbook(); workbook.LoadFromFile("Sample.xlsx");

 

步驟2獲取該Excel文檔的第一個工作表,並設置打印選項。

Worksheet sheet = workbook.Worksheets[0];

 

下面列出幾個常設置的打印選項:

設置打印區域/范圍:

sheet.PageSetup.PrintArea = "A7:T8";

 

設置打印表頭(標題行):

sheet.PageSetup.PrintTitleRows = "$1:$1";

 

設置excel工作表縮放為一頁寬一頁高:

sheet.PageSetup.FitToPagesWide = 1; sheet.PageSetup.FitToPagesTall = 1;

這里可以設置它們的值為0或1來改變打印效果以滿足不同需求。 

 

除此之外還可以設置頁面方向及打印頁面大小等:

設置頁面方向:

sheet.PageSetup.Orientation = PageOrientationType.Portrait;

 

設置打印頁面大小:

sheet.PageSetup.PaperSize = PaperSizeType.PaperA3;

 

步驟3創建一個新的PrintDialog對象,設置dialog屬性及打印頁面范圍並打印文檔。

復制代碼
PrintDialog dialog = new PrintDialog(); dialog.AllowPrintToFile = true; dialog.AllowCurrentPage = true; dialog.AllowSomePages = true; dialog.AllowSelection = true; dialog.UseEXDialog = true; dialog.PrinterSettings.Duplex = Duplex.Simplex; dialog.PrinterSettings.FromPage = 0; dialog.PrinterSettings.ToPage = 8; dialog.PrinterSettings.PrintRange = PrintRange.SomePages; workbook.PrintDialog = dialog; PrintDocument pd = workbook.PrintDocument; if (dialog.ShowDialog() == DialogResult.OK) { pd.Print(); }
復制代碼

 

運行程序會出現如下對話框:

 

這里我選擇Microsoft XPS Document Writer將這個excel文檔打印為XPS格式,得到的XPS文件如下:

 全部代碼:

using System;
using System.Drawing.Printing;
using System.Windows.Forms;
using Spire.Xls;
 
namespace Print_Excel_in_csharp
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Workbook workbook = new Workbook();
            workbook.LoadFromFile("Sample.xlsx");           

            Worksheet sheet = workbook.Worksheets[0];
            sheet.PageSetup.PrintArea = "A7:T8";
            sheet.PageSetup.PrintTitleRows = "$1:$1";
            sheet.PageSetup.FitToPagesWide = 1;
            sheet.PageSetup.FitToPagesTall = 1;
            //sheet.PageSetup.Orientation = PageOrientationType.Landscape;
            //sheet.PageSetup.PaperSize = PaperSizeType.PaperA3;
           
            PrintDialog dialog = new PrintDialog();
            dialog.AllowPrintToFile = true;
            dialog.AllowCurrentPage = true;
            dialog.AllowSomePages = true;
            dialog.AllowSelection = true;
            dialog.UseEXDialog = true;
            dialog.PrinterSettings.Duplex = Duplex.Simplex;
            dialog.PrinterSettings.FromPage = 0;
            dialog.PrinterSettings.ToPage = 8;
            dialog.PrinterSettings.PrintRange = PrintRange.SomePages;
            workbook.PrintDialog = dialog;
            PrintDocument pd = workbook.PrintDocument;
            if (dialog.ShowDialog() == DialogResult.OK)
            { pd.Print(); }
        }

    }

}

 

 

 

 

參考博文

1. brian0031. C#打印頁面設置(橫向,頁寬,頁高), 2012-03.

2. E-iceblue. C# 設置Excel打印選項及打印excel文檔2016-05.

3. c#的excel邊距設置 , 2008-6.

 

擴展閱讀

1. C# 合並及拆分PDF文件

2. C# 給Word文檔添加內容控件

3. C#讀寫xml文件

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM