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.
擴展閱讀
3. C#讀寫xml文件