C#之二十三 打印和水晶報表

      網(wǎng)友投稿 759 2025-04-03

      視頻課堂https://edu.csdn.net/course/play/7621

      C#程序設(shè)計及宿舍管理系統(tǒng)實戰(zhàn)

      https://edu.csdn.net/course/detail/27107

      打印組件介紹

      打印是常用的的功能,打印的原理從本質(zhì)上和Windows窗體畫圖的原理是一樣的,你在窗體里面畫了一個圓,那么同樣的代碼,打印機也會在紙張的同一個位置打印了出一個圓,它們所不同的就是輸出終端而已,下面讓我們先來看一下關(guān)于打印的一些類。

      1、PrintDocument類

      PrintDocument組件用于設(shè)置一些屬性,這些屬性說明在基于Windows操作系統(tǒng)的應(yīng)用程序中要打印什么內(nèi)容以及打印文檔的能力,可將它與PrintDialog組件一起使用來控制文檔打印的各個方面,PrintDocument是最重的Windows打印對象,負責(zé)建立和其它打印對象的聯(lián)系,該組件的常用屬性及方法如下:

      2、PrintPreviewDialog組件常用屬性及方法

      屬性及方法

      說明

      DefalultPageSetting(屬性)

      獲取或設(shè)置頁設(shè)置,這些頁設(shè)置用作打印的所有頁的默認設(shè)置

      DocumentName(屬性)

      獲取或廢置打印文檔時要顯示的文檔的名

      OriginAtMargins(屬性)

      獲取或設(shè)置 一個值該值批示與頁關(guān)聯(lián)的圖形對象的位置是位于用戶指定邊距內(nèi)還是位于該頁可打印區(qū)域的左上角

      PrintController(屬性)

      獲取或設(shè)置指導(dǎo)打印進程的打印控制器

      PrintSetting(屬性)

      獲取或設(shè)置對文檔進行打印的打印機

      Print(方法)

      開始文檔的打印進程

      PrintPreviewDialog組件預(yù)先配置的對話框,用于顯示PrintDocument組件在打印時的外觀。該組件的常用屬性及方法如下:

      屬性及方法

      說明

      Document(屬性)

      獲取或設(shè)置要預(yù)覽的文檔

      UseAntiAlia(屬性)

      獲取或設(shè)置一個值,該值批示打印是否使用操作系統(tǒng)的防鋸齒功能

      ShowDialog(方法)

      顯示“打印預(yù)覽“窗口

      3、PrintDialog組件常用屬性及方法:

      屬性及方法

      說明

      AllowCurentpage(屬性)

      C#之二十三 打印和水晶報表

      獲取或調(diào)協(xié)一個值,該值指示是否顯示 “當(dāng)前頁“選項按鈕

      AllowPrintToFile(屬性)

      獲取或設(shè)置一個值,該值指示是否啟用“打印到文件“復(fù)選框

      AllowSelection(屬性)

      獲取或設(shè)置一個值,該值指示是否啟用“頁“選項按鈕

      Document(屬性)

      獲獲取或設(shè)置一個值,指示用于獲取PrinterSetting類的PrintDocument對象

      PrintertSetting(屬性)

      獲取或設(shè)置對話修改的打印機設(shè)置

      AllowSomePage(屬性)

      獲取或設(shè)置一個值,該值指示是否啟用“選擇“選項按鈕

      PrintToFile(屬性)

      獲取或設(shè)置一個值,該值批示是否選中“打印到文件“復(fù)選框

      Reset(屬性)

      將所有選項,最后待定的打印機和頁面設(shè)置重新設(shè)置為其?????????? 默認值

      ShowDialog(方法)

      顯示“打印“對話框

      實現(xiàn)過程

      1、新建一個Windows應(yīng)用程序,將其命名為Excell-01,默認主窗體Forml

      2、Forml窗體設(shè)計時主要用到的控件及說明如下:

      控件類型

      控件名稱

      用途

      TextBox

      TxetBox1

      TxetBox2

      TxetBox3

      輸入員工姓名

      輸入員工據(jù)部門

      輸入員工擔(dān)任職位

      Button

      Button1

      執(zhí)行打印操作

      PrintDocument

      PrintDocument1

      設(shè)置要打印的文檔

      PrintPreviewDialog

      PrintPreviewDialog1

      顯示“打印預(yù)覽“窗口

      PrintDialog

      PrintDialog1

      顯示“打印“窗口

      主要程序代碼:

      Private void printDocument1_PrintPage(objectsender,System.Drawing.PrintPageEventArgs e)

      {

      e.Graphiscs.DrawString(label.Text,new Font(“宋體”,10,F(xiàn)ontStyle.Regular),Brushes.Brushes.Black,260,4000);

      e.?e.Graphiscs.DrawString(textBox1.Text,new Font(“宋體”,10,F(xiàn)ontStyle.Regular),Brushes.Brushes.Black,260,4000);

      e.Graphiscs.DrawString(label2.Text,new Font(“宋體”,10,F(xiàn)ontStyle.Regular),Brushes.Brushes.Black,260,4000);

      e.Graphiscs.DrawString(textBox2.Text,new Font(“宋體”,10,F(xiàn)ontStyle.Regular),Brushes.Brushes.Black,260,4000);

      e.Graphiscs.DrawString(label3.Text,new Font(“宋體”,10,F(xiàn)ontStyle.Regular),Brushes.Brushes.Black,260,4000);

      e.Graphiscs.DrawString(textBox3.Text,new Font(“宋體”,10,F(xiàn)ontStyle.Regular),Brushes.Brushes.Black,260,4000);

      }

      水晶報表的簡介

      水晶報表(Crystal Reprots)是加拿大Crystal Decisions公司出品的專業(yè)級報表分析與生成軟件,在全球經(jīng)書擁有超過1100萬用戶.水晶報表及水晶報表企業(yè)版等軟件可以與Visual Basic,Visual Studio.NET,ASP以及Java程序開發(fā)環(huán)境等平臺實現(xiàn)完美的集成.目前水晶報表組件經(jīng)書捆綁在了Visual Studio.NET系列開發(fā)工具當(dāng)中,通過Visual Studio學(xué)習(xí)2005可以輕松創(chuàng)建和設(shè)計水晶報表.水晶報表具有非常強大的功能 ,不僅可以生成復(fù)雜.漂亮的圖表報表,還可以將報表導(dǎo)出成Word,Excel,RTE,HTML等格式,是進行Web和Windows報表 開發(fā)的必備知識.與其他報表相比,水晶報表軟件具有高穩(wěn)定性,高可伸縮性以及應(yīng)用平臺廣泛等杰出優(yōu)點,水晶報表幾乎可以從任何數(shù)據(jù)源中生成你需要的報表.內(nèi)置報表專家在你生成和完成一般的報表任務(wù)過程中,會一步一步地指導(dǎo)你進行了操作.報表專家通過公式,交叉表,子報表和設(shè)置條件格式幫助表現(xiàn)數(shù)據(jù)的實際意義,揭示可能被隱藏的重要關(guān)系.如果文字和數(shù)字確實不夠充分,則用地理地圖和圖形進行形象的信息輸出。

      將報表擴展到Web水晶報表的靈活性并未停留創(chuàng)建報表這一功能上.你可以用各種各的格式發(fā)布報表,包括用微軟的Word和Excel發(fā)布,通過電子郵件甚Web報表功能允許工作組中的其他成員在他們自己的Web瀏覽器中查看或更新共享報表。

      通過將水晶報表的報表處理功能不聽整合到自己的數(shù)據(jù)庫應(yīng)用程序中,應(yīng)用程序和Web開發(fā)人員可以節(jié)省開發(fā)時間并滿足用戶的需求。水晶報表支持大多數(shù)流行的開發(fā)語言。可以方便地在任何應(yīng)用程序中添加 報表。不論你是IT行業(yè)的站點管理員,還是營銷推廣經(jīng)理,也無論你是金融業(yè)的數(shù)據(jù)庫管理員還是CEO,水晶報表都堪稱是一個功能強大的工具,它可以幫助每一個人分析,解釋重要數(shù)據(jù)。

      在Visual Studio 2005中系統(tǒng)為創(chuàng)建水晶報表提供了三件法定:一個是名叫CrystalReportViewer的報表查看控件,一個是ReportDocument,另外一個是水晶報表專家|(實際上Visual Studio 2005附帶兩個版本的CrystalReportViewer控件:一個用于Web應(yīng)用程序,一個用于Windows應(yīng)用程序,位于CrystalDecisions.Windows.Forms命名空間內(nèi)的CrystalReportViewer控件由Windows項目使用),其中前兩個都可以在工具箱的“Crystal Reports”的卡片中找到,報表專家需要你點擊項目菜單中的“添加新項”命令創(chuàng)建。

      其中CrystalReportViewer控件就是一個顯示控件,可以讓你把報表顯示基于頁面的布局中:ReportDocument控件表示一個報表 ,它包含定義,格式化加裁,導(dǎo)出 和打印報表的屬性和方法:報表專家是一個幫助你建立報表數(shù)據(jù)源的向?qū)В幸幌盗邢驅(qū)υ捒颉?/p>

      快速建立水晶報表—創(chuàng)建一個學(xué)生信息報表

      我們首先建立 一個簡單的水晶報表的示例,讓你對報表有一個概念。這個報表將對一個學(xué)生表進行報表。要建立一個水晶報表,需要用到.NET為我們提供的CrystalReportViewer和ReportDocument控件以及報表專家。首先你需要用報表專家一個數(shù)據(jù)源,然后將這個數(shù)據(jù)源提供縱給ReportDocument控件,最后只要把RerportDocument綁定到CrystalReportViewer即可。它們的關(guān)系如下:

      下面我們就來建立水晶報表,步驟

      (1)??????新建一個Windows應(yīng)用程序,將其命名為Exll-02,默認主窗體為Forml,

      (2)??????在Forml窗體中添加一個CyrstalReportViewer控件,用來查看報表,

      (3)?????? 選中當(dāng)前項目上,單擊右鍵,在彈出的快捷菜單中,選擇“添加“/”新建項“選項,在彈出的”添加新項“對話框中選擇”Crystal報表“

      (4)?????? 單擊“確定“按鈕,新建一個報表并打開圖所示”Crystal庫“對話框,該對話框中,在”創(chuàng)建新Crystal Report 文檔“中選擇”使用報表向?qū)А斑x項,并”選擇專家“中的”標準“選項

      (5)?????? 單擊“確定“按鈕,打開”標準報表創(chuàng)建向?qū)А皩υ捒颍鐖D所示。該對話框用來選擇和配置數(shù)據(jù)源,如果項目中存在數(shù)據(jù)源,則在”可用數(shù)據(jù)源“中選擇”項目數(shù)據(jù)“項,并從選擇合適的數(shù)據(jù)源,如果沒有數(shù)據(jù)源,可以新建一個數(shù)據(jù)源,本實例以SQL Server 2005為例。

      (6)?????? 選擇“可用數(shù)據(jù)源“中“創(chuàng)建新連接”下的OLEDB(ADO)命令打開對話框,選定數(shù)據(jù)源后,單擊“下一步“按鈕,在界面中填寫正確的數(shù)據(jù)庫連接信息,單擊”下一步“按鈕,進入高級信息編輯界面,可以通過雙擊或選擇需要編輯的項,單擊”編輯值“按鈕進行適當(dāng)?shù)木庉嫞庉嬐瓿珊螅瑔螕簟蓖瓿伞鞍粹o即可完成新連接的創(chuàng)建,如圖所示。

      (7)?????? 從已創(chuàng)建連接的“標準報表創(chuàng)建向?qū)А爸羞x擇合適的數(shù)據(jù)表作為數(shù)據(jù)源,選擇數(shù)據(jù)表,通過相左或相右的按鈕,對選定的數(shù)據(jù)表進行單一添加或移除,如圖所示。也可以利用<Ctrl+數(shù)據(jù)表>快捷鍵選擇多個數(shù)據(jù)表進行添加和移除。

      (8)?????? 選定數(shù)據(jù)表后,,單擊“下一步“按鈕,出現(xiàn)報表字段選擇界面,如圖所示 在報表字段選擇界面中需要在報表中顯示的字段,單擊”下一步“按鈕,進入報表分組界面,用戶可以選擇合適的字段對數(shù)據(jù)進行分組,也可以不對字段分組,本實例無分組字段,如圖所示。

      (9)?????? 選定完成后,單擊“下一步“按鈕,即可出現(xiàn)記錄選定界面,用戶可以通過篩選字段來控制輸出結(jié)果,如圖所示。

      (10)?? 完成以上步驟后,最后一項就是為報表選擇樣式了,報表專家為用戶提供了10種可選樣式供用戶筢,用戶可以選擇自己喜歡的樣式來顯示報表數(shù)據(jù)。本實例選擇可選樣式中的“標準“樣式,如圖所示 。單擊”完成“按鈕,完成報表設(shè)計。

      調(diào)用Office進行打印

      在程序中查看一些信息資料時,經(jīng)常需要將這些資料通過Word文檔或Excel格式打印出來,那么如何在Windows應(yīng)用程序中使用這些Office組件呢?本節(jié)將通過 兩個具體實例介紹如何將Windows窗體中的內(nèi)容以Word文檔或Excels格式顯示打印出來。

      1???????????利用Word打印員工報表

      Microsoft Word 是微軟公司提供的文檔處理軟件,在處理文檔和資料的過程中顯示出了強大的功能。本實例在打印某企業(yè)的員工信息時,實現(xiàn)了通過將數(shù)據(jù)導(dǎo)入到Word文檔中進行打印的功能。運行本實例,如圖所示,單擊“輸出Word“按鈕,DataGridView控件中的數(shù)據(jù)便以Word文檔方式打開。

      技術(shù)要點

      本實例通過使用Microsoft Word自動化對象模型中的Cell對象 ,將DataGRIDview控件中的數(shù)據(jù)導(dǎo)出到Word文檔表格中。

      在Microsoft Word自動化對象模型中,Tables集合中是同Table對象組成的集合,這些對象代表選定內(nèi)容,范圍或文檔中的表格。Table對象 的Cell對象 代表表格中的單個單元格,Cell對象是Cells集合中的元素,Cells集合中指定對象中所有的單元格。本實例中主要用到了Cell對象 的InsertAfter(方法)。

      InsertAter()方法用來將指定文本插入某區(qū)域或選定內(nèi)容的后面,其使用語法格式如下:

      public void InsertAfter(string Text)

      參數(shù)說明如下

      Text:要插入的文本

      實現(xiàn)過程

      (1)???? 新建一個Windows應(yīng)用程序,將其命名為Exll-03,默認主窗體為Forml;

      (2)???? 在Forml窗體中添加一個DataGridView控件和一個Button控件,其中,DataGridView控件用來顯示數(shù)據(jù)庫中的記錄,Button控件用來將DataGridView控件中的數(shù)據(jù)以Word文檔格式輸出;

      (3)???? 主要程序代碼,在DataGridView控件中顯示數(shù)據(jù)的實現(xiàn)代碼如下:

      private void Form1_Load(objectsender,EventArg P s e)

      {

      Myda = new SqlDataAdapter("select* from studentinfor", sqlcon);

      Myds = new DataSet();

      sqlcon.Open();

      Myda.Fill(Myds);

      sqlcon.Close();

      dataGridView1.DataSource= Myds.Tables[0];

      }

      “輸出Word”按鈕的Click事件實現(xiàn)代碼如下:

      private void button1_Click(objectsender,EventArgs e)

      {

      ExportDataGridview(dataGridView1, true);

      }

      自定交方法ExportDataGridview()用來實現(xiàn)將DataGridView控件中數(shù)據(jù)導(dǎo)出到Word,該方法主要代碼如下:

      public bool ExportDataGridview(DataGridView dgv,bool isShowWord)

      {

      Word.Document mydoc = newWord.Document();

      Word.Table mytabel;

      Word.Selection? myself;

      object myobj;

      if (dgv.Rows.Count == 0)

      return false;

      Word.Application word = newWord.Application();

      myobj = System.Reflection.Missing.Value;

      mydoc= word.Documents.Add(ref myobj,ref myobj, ref myobj,ref myobj);

      word.Visible = isShowWord;

      mydoc.Select();

      myself = word.Selection;

      mytabel = mydoc.Tables.Add(myself.Range, dgv.RowCount, dgv.ColumnCount,ref myobj,ref myobj);

      mytabel.Columns.SetWidth(30, Word.WdRulerStyle.wdAdjustNone);

      for (int i = 0; i< dgv.ColumnCount; i++)

      {

      mytabel.Cell(1, i + 1).Range.InsertAfter(dgv.Columns[i].HeaderText);

      }

      for (int i = 0; i< dgv.RowCount - 1; i++)

      {

      for (int j = 0;j

      {

      mytabel.Cell(i + 2, j + 1).Range.InsertAfter(dgv[j,i].Value.ToString()); ;

      }

      }

      return true;

      }

      }

      注意:在程序中對Word進行操作控制時,需要引用Word動態(tài)鏈接庫(Mircorsoft Word9.0 ObjectLibray),添加方法如下:選中當(dāng)前項目,單擊右鍵,選擇“添加引用”選項,在彈出的“添加引用“對話框中選擇”COM“選項卡,然后找到要引用的Word動態(tài)鏈接庫,單擊“確定”按鈕即可。

      Microsoft? Excel是微軟公司提供的用于辦公的應(yīng)用軟件,具有強大的報表統(tǒng)計等功能。本實例在打印學(xué)生信息時,通過將數(shù)據(jù)導(dǎo)入到Excel 文件中進行打印。運行本實例,如圖(1)所示:單擊[輸出Excel]按鈕,DataGridView控件中的數(shù)據(jù)便以Excel 文件方式打開,如圖(2)所示,然后用戶可以用Excel 自帶的打印功能對學(xué)生信息進行打印。

      (1)

      (2)輸出的Excel報表

      技術(shù)要點:

      本實例中首先調(diào)用MicrosoftExcel自動化對象模型的Workbooks對象的Add()方法創(chuàng)建一個新的工作薄,然后通過設(shè)置Excel對象的Cells屬性,向新建的工作薄中添加數(shù)據(jù)記錄。下面對Workbooks對象的Add()方法和Excel對象Cells屬性進行詳細介紹。

      (1)Workbooks對象的Add()方法

      該方法主要用來創(chuàng)建一個新的工作薄,其使用語法格式如下:

      Workbook Add([In,Optional]object Template)

      參數(shù)說明如下:

      Template:指定是否添加工作薄,如果為True ,表示添加;否則,表示不添加。

      返回值:返回Workbook類型,表示一個Excel工作薄。

      (2)Excel對象的Cell屬性

      Excel.Cells[0,0]=”Excel”;

      該屬性用來指定Excel工作薄中單元格的內(nèi)容。例如,下面的代碼用來指定Excel工作薄中第一行第一列的單元格中的內(nèi)容為“Excel”:

      實現(xiàn)過程:

      (1)?????????????新建一個Windows應(yīng)用程序,默認主窗體為Form1.

      (2)?????????????在Form1窗體中添加一個DataGridView控件和一個Button控件其中DataGridView控件用來顯示數(shù)據(jù)庫中的記錄,Button控件用來將DataGridView控件中的數(shù)據(jù)以Excel格式輸出。

      (3)?????????????主要程序代碼。

      按鈕的Click事件實現(xiàn)代碼如下:

      private void button1_Click(object sender, EventArgs e)

      {

      ExportDataGridview(dataGridView1, true);

      }

      自定義方法ExportDataGridView()用來實現(xiàn)將DataGridView控件中數(shù)據(jù)導(dǎo)出到Excel,該方法

      主要代碼如下:

      public boolExportDataGridview(DataGridView dgv, bool isShowExcel)

      {

      if (dgv.Rows.Count == 0)

      return false;

      //建立Excel對象

      Excel.Application excel = new Excel.Application();

      excel.Application.Workbooks.Add(true);

      excel.Visible = isShowExcel;

      //生成字段名稱

      for (int i = 0; i < dgv.ColumnCount; i++)

      {

      excel.Cells[1, i + 1] =dgv.Columns[i].HeaderText;

      }

      //填充數(shù)據(jù)

      for (int i = 0; i < dgv.RowCount - 1; i++)

      {

      for (int j = 0; j

      {

      if (dgv[j, i].ValueType== typeof(string))

      {

      excel.Cells[i + 2, j +1] = "" + dgv[j, i].Value.ToString();

      }

      注意:在程序中對Excel進行操作控制時,需要引用Excel動態(tài)鏈接庫(MicrosoftExcel 11.0 Object Library)。添加方法如下:選中當(dāng)前項目,單擊,選擇“添加引用”選項,在彈出的“添加引用”對話框中選擇“COM”選項卡,然后找到要引用的Excel動態(tài)鏈接庫,單擊“確定”按鈕即可。

      C# Windows

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:Java - Jackson JSON Java Parser API
      下一篇:《React+Redux前端開發(fā)實戰(zhàn)》—1 React入門
      相關(guān)文章
      久久亚洲国产精品| 亚洲午夜精品久久久久久app| 亚洲国产精品99久久久久久| 亚洲午夜电影在线观看高清| 久久精品国产亚洲av日韩| 久久久久亚洲av无码尤物| 久久久久久a亚洲欧洲AV| 亚洲精品成人网站在线观看| 国产亚洲精品成人AA片新蒲金| 亚洲五月综合缴情在线观看| 亚洲综合区小说区激情区| 中文字幕精品无码亚洲字| 国产亚洲精aa成人网站| 亚洲亚洲人成综合网络| 亚洲αv在线精品糸列| 亚洲AV无码国产精品色午友在线| 香蕉蕉亚亚洲aav综合| 亚洲综合精品香蕉久久网97| 亚洲美女视频免费| 亚洲av成人一区二区三区| 中文字幕亚洲码在线| 亚洲久热无码av中文字幕| 亚洲av午夜国产精品无码中文字 | 亚洲色无码一区二区三区| 亚洲一区AV无码少妇电影☆| 日韩亚洲人成在线综合日本| 亚洲国产一区二区三区青草影视| 国产成人A人亚洲精品无码| 亚洲国产婷婷六月丁香| 久久久亚洲裙底偷窥综合| 亚洲日本香蕉视频| 亚洲色偷偷综合亚洲AV伊人蜜桃 | 亚洲国产成人精品久久久国产成人一区二区三区综 | 国产 亚洲 中文在线 字幕| 亚洲AV无码国产剧情| 亚洲视频一区二区| 亚洲VA中文字幕无码毛片| 亚洲高清不卡视频| 77777亚洲午夜久久多喷| 亚洲av成人无码网站…| 国产精品亚洲综合一区|