日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Winform 导出成Excel打印代码

發布時間:2025/3/21 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Winform 导出成Excel打印代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

WinForm中 直接調用Excel的打印預覽功能,但不顯示Excel文件

using Microsoft.Office.Interop.Excel; //引用public void PrintPriviewExcelFile(string filePath) {Microsoft.Office.Interop.Excel.ApplicationClass xlApp = new Microsoft.Office.Interop.Excel.ApplicationClass();xlApp.Visible = true;object oMissing = System.Reflection.Missing.Value;Microsoft.Office.Interop.Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(filePath, 0, true, 5, oMissing, oMissing, true, 1, oMissing, false, false, oMissing, false, oMissing, oMissing);Microsoft.Office.Interop.Excel.Worksheet xlWorksheet = (Microsoft.Office.Interop.Excel.Worksheet)xlWorkbook.Worksheets[1];xlWorksheet.PrintPreview(null);xlApp.Visible = false;xlWorksheet = null;}

還需要設置Excel的格式

private _Workbook _workBook = null; private Worksheet _workSheet = null; private Excel.Application _excelApplicatin = null;_excelApplicatin = new Excel.Application(); _excelApplicatin.Visible = true; _excelApplicatin.DisplayAlerts = true;_workBook = _excelApplicatin.Workbooks.Add(XlSheetType.xlWorksheet); _workSheet = (Worksheet)_workBook.ActiveSheet; _workSheet.Name = "workSheetName";//打開已存在的Excelstring strExcelPathName = AppDomain.CurrentDomain.BaseDirectory + "excelSheetName.xls";Excel.Workbook workBook = application.Workbooks.Open(strExcelPathName, Type.Missing, Type.Missing,Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);//讀取已打開的ExcelExcel.Worksheet workSheet1 = (Excel.Worksheet)workBook.Sheets["SheetName1"];Excel.Worksheet workSheet2 = (Excel.Worksheet)workBook.Sheets["SheetName2"]; //添加一個workSheetWorksheet workSheet = (Worksheet)workBook.Worksheets.Add(System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing);//RowHeight "1:1"表示第一行, "1:2"表示,第一行和第二行 ((Excel.Range)_workSheet.Rows["1:1", System.Type.Missing]).RowHeight = 100;//ColumnWidth "A:B"表示第一列和第二列, "A:A"表示第一列 ((Excel.Range)_workSheet.Columns["A:B", System.Type.Missing]).ColumnWidth = 10;// EXCEL操作(需要凍結的字段 按住ALT+W 再按F)Excel.Range excelRange = _workSheet .get_Range(_workSheet .Cells[10, 5], _workSheet .Cells[10, 5]);excelRange.Select();excelApplication.ActiveWindow.FreezePanes = true;//Borders.LineStyle 單元格邊框線 Excel.Range excelRange = _workSheet.get_Range(_workSheet.Cells[2, 2], _workSheet.Cells[4, 6]); //單元格邊框線類型(線型,虛線型) excelRange.Borders.LineStyle = 1; excelRange.Borders.get_Item(XlBordersIndex.xlEdgeTop).LineStyle = Excel.XlLineStyle.xlContinuous; //指定單元格下邊框線粗細,和色彩 excelRange.Borders.get_Item(XlBordersIndex.xlEdgeBottom).Weight = Excel.XlBorderWeight.xlMedium;excelRange.Borders.get_Item(XlBordersIndex.xlEdgeBottom).ColorIndex =3;//設置字體大小 excelRange.Font.Size = 15; //設置字體是否有下劃線 excelRange.Font.Underline = true; //設置字體在單元格內的對其方式 excelRange.HorizontalAlignment = XlHAlign.xlHAlignCenter; //設置單元格的寬度 excelRange.ColumnWidth = 15; //設置單元格的背景色 excelRange.Cells.Interior.Color = System.Drawing.Color.FromArgb(255, 204, 153).ToArgb(); // 給單元格加邊框 excelRange.BorderAround(XlLineStyle.xlContinuous, XlBorderWeight.xlThick, XlColorIndex.xlColorIndexAutomatic, System.Drawing.Color.Black.ToArgb()); //自動調整列寬 excelRange.EntireColumn.AutoFit(); // 文本水平居中方式 excelRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter; //文本自動換行 excelRange.WrapText = true; //填充顏色為淡紫色 excelRange.Interior.ColorIndex = 39;//合并單元格 excelRange.Merge(excelRange.MergeCells); _workSheet.get_Range("A15", "B15").Merge(_workSheet.get_Range("A15", "B15").MergeCells);/// <summary> /// 常用顏色定義,對就Excel中顏色名 /// </summary> public enum ColorIndex {無色 = -4142, 自動 = -4105, 黑色 = 1, 褐色 = 53, 橄欖 = 52, 深綠 = 51, 深青 = 49,深藍 = 11, 靛藍 = 55, 灰色80 = 56, 深紅 = 9, 橙色 = 46, 深黃 = 12, 綠色 = 10,青色 = 14, 藍色 = 5, 藍灰 = 47, 灰色50 = 16, 紅色 = 3, 淺橙色 = 45, 酸橙色 = 43,海綠 = 50, 水綠色 = 42, 淺藍 = 41, 紫羅蘭 = 13, 灰色40 = 48, 粉紅 = 7,金色 = 44, 黃色 = 6, 鮮綠 = 4, 青綠 = 8, 天藍 = 33, 梅紅 = 54, 灰色25 = 15,玫瑰紅 = 38, 茶色 = 40, 淺黃 = 36, 淺綠 = 35, 淺青綠 = 34, 淡藍 = 37, 淡紫 = 39,白色 = 2 }range.NumberFormatLocal = "@"; //設置單元格格式為文本range = (Range)worksheet.get_Range("A1", "E1"); //獲取Excel多個單元格區域:本例做為Excel表頭range.Merge(0); //單元格合并動作worksheet.Cells[1, 1] = "Excel單元格賦值"; //Excel單元格賦值range.Font.Size = 15; //設置字體大小range.Font.Underline=true; //設置字體是否有下劃線range.Font.Name="黑體"; 設置字體的種類 range.HorizontalAlignment=XlHAlign.xlHAlignCenter; //設置字體在單元格內的對其方式range.ColumnWidth=15; //設置單元格的寬度range.Cells.Interior.Color=System.Drawing.Color.FromArgb(255,204,153).ToArgb(); //設置單元格的背景色range.Borders.LineStyle=1; //設置單元格邊框的粗細range.BorderAround(XlLineStyle.xlContinuous,XlBorderWeight.xlThick,XlColorIndex.xlColorIndexAutomatic,System.Drawing.Color.Black.ToArgb()); //給單元格加邊框range.Borders.get_Item(Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeTop).LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlLineStyleNone; //設置單元格上邊框為無邊框range.EntireColumn.AutoFit(); //自動調整列寬Range.HorizontalAlignment= xlCenter; // 文本水平居中方式Range.VerticalAlignment= xlCenter //文本垂直居中方式Range.WrapText=true; //文本自動換行Range.Interior.ColorIndex=39; //填充顏色為淡紫色Range.Font.Color=clBlue; //字體顏色xlsApp.DisplayAlerts=false; //保存Excel的時候,不彈出是否保存的窗口直接進行保存 Excel是微軟公司辦公自動化套件中的一個軟件,他主要是用來處理電子表格。Excel以其功能強大,界面友好等受到了許多用戶的歡迎。在設計應用系統時,對于不同的用戶,他們對于打印的需求是不一樣的,如果要使得程序中的打印功能適用于每一個用戶,可以想象程序設計是十分復雜的。由于Excel表格的功能強大,又由于幾乎每一臺機器都安裝了它,如果把程序處理的結果放到Excel表格中,這樣每一個用戶就可以根據自己的需要在Excel中定制自己的打印。這樣不僅使得程序設計簡單,而且又滿足了諸多用戶的要求,更加實用了。那么用Visual C#如何調用Excel,如何又把數據存放到Excel表格中?本文就來探討上述問題的解決辦法。Excel對象微軟的Excel對象模型包括了128個不同的對象,從矩形,文本框等簡單的對象到透視表,圖表等復雜的對象.下面我們簡單介紹一下其中最重要,也是用得最多的四個對象。(1) Application對象。Application對象處于Excel對象層次結構的頂層,表示Excel自身的運行環境。 (2) Workbook對象。Workbook對象直接地處于Application對象的下層,表示一個Excel工作薄文件。(3) Worksheet對象。Worksheet對象包含于Workbook對象,表示一個Excel工作表。(4) Range對象。Range對象包含于Worksheet對象,表示Excel工作表中的一個或多個單元格在.NET公用語言框架內運行的程序為受管代碼。受管代碼在程序中所有類型都受到嚴格檢查,沒有指針,對內存的管理完全由運行系統控制。受控狀態下,編寫程序更為容易,且更少出錯,我們可以花更多的時間在解決實際問題上而不是在計算機語言問題上。相對而言,那些在.NET框架外運行的程序為非受管代碼。比如:COM組件、ActiveX組件、Win32 API函數、指針運算等。C#編程中在某些特定情況下,需要運用非受管代碼,例如,要利用一個成熟的COM組件,或者調用一個API函數,或者用指針去編寫實時/高效程序等。Visual C#中調用Excel的COM組件一個.NET組件事實上是一個.NET下的DLL,它包含的不僅是運行程序本身,更重要的是包含這個DLL的描述信息(Meta Data,即元數據),而一個COM組件是用其類庫(TLB)儲存其描述信息。這些COM組件都是非受管代碼,要在Visual C#中使用這些非受管代碼的COM組件,就必須把他們轉換成受管代碼的.NET組件。所以在用Visual C#調用Excel表格之前,必須完成從COM組件的非受管代碼到受管代碼的類庫的轉換。1、將Excel的COM組件轉換為.NET組件在項目中打開Add Reference對話框,選擇COM欄,之后在COM列表中找到"Microsoft Excel 9.0 Object Library"(Office 2000),然后將其加入到項目的References中即可。Visual C#.NET會自動產生相應的.NET組件文件,以后即可正常使用。這個轉換形成.NET組件不能單獨使用,它不過是以前的COM組件的一個外層包裝,在.NET中可以通過這個外層包裝去發現原來的COM組件并調用其相應的界面函數。所以它必須與原來的COM組件一起起作用。2、Visual C#打開Excel表格事實上,在C#中使用一個經轉換的COM組件和使用任何一個其它.NET組件完全一樣。可以用new關鍵字創建一個經轉換的COM組件,然后再像使用任何一個其它C#對象一樣使用這個組件對象。在轉換后的.NET組件中定義了一個命名空間Excel,在此命名空間中封裝了一個類Application,這個類和啟動Excel表格有非常重要的關系,在Visual C#中,只需要下列三行代碼就可以完成打開Excel表格的工作,具體如下:Excel.Application excel = new Excel.Application ();//引用Excel對象 excel.Application.Workbooks.Add ( true );//引用Excel工作簿 excel.Visible = true ;//使Excel可視 但此時的Excel表格是一個空的表格,沒有任何內容,下面就來介紹如何往Excel表格中輸入數據。3、往Excel表格中輸入數據在命名空間"Excel"中,還定義了一個類"Cell",這個類所代表的就是Excel表格中的一個單元格。通過給"Cell"賦值,從而實現往Excel表格中輸入相應的數據,下列代碼功能是打開Excel表格,并且往表格輸入一些數據。Excel.Application excel = new Excel.Application () ; excel.Application.Workbooks.Add ( true ) ; excel.Cells[ 1 , 1 ] = "First Row First Column" ; excel.Cells[ 1 , 2 ] = "First Row Second Column" ; excel.Cells[ 2 , 1 ] = "Second Row First Column" ; excel.Cells[ 2 , 2 ] = "Second Row Second Column" ; excel.Visible = true ; 一、調用Excel的方法:一般情況下有兩種方法調用Excel: 1、直接使用Delphi自帶的組件:在Form中分別放入ExcelApplication, ExcelWorkbook和ExcelWorksheet。 2、動態創建Excel文件:首先創建 Excel 對象,使用ComObj,Excel2000: var ExcelApp: Variant; ExcelApp := CreateOleObject( 'Excel.Application' );二、導入數據:在程序中,我們可以將查詢到的數據(SQL、Access、)導入到Excel中。例如:用Adoquery查詢Access中的數據: 1、先查到所需的數據; 2、導入:i:=1; Adoquery.First;while not Adoquery.Eof doBeginExcelApp.WorkSheets[1].Cells[i,1].Value := i;//添加序號的值 ExcelApp.WorkSheets[1].Cells[i,2].Value := Adoquery.FieldByName('cp_name').AsString;……Inc(i); Adoquery.Next;End; 當然也可以把Adotable、Adoquery、Table、Query等組件的數據導入到Excel中。三、Excel的處理:如果在你已知Excel格式的情況下,可以控制Excel,如下: 1、 顯示當前窗口:ExcelApp.Visible := True; 2、 更改 Excel 標題欄:ExcelApp.Caption := '標題內容'; 3、 添加新工作簿:ExcelApp.WorkBooks.Add; 4、 設置第2個工作表為活動工作表:ExcelApp.WorkSheets[2].Activate; 5、 給單元格賦值:ExcelApp.Cells[1,1].Value := '第一行第一列'; 6、 設置指定列的寬度(單位:字符個數),以第一列為例: ExcelApp.ActiveSheet.Columns[1].ColumnsWidth := 5; 7、 設置指定行的高度(單位:磅)(1磅=0.035厘米),以第二行為例: ExcelApp.ActiveSheet.Rows[2].RowHeight := 1/0.035; // 1厘米 8、文字水平居中:Excelid.worksheets[1].Rows[1].HorizontalAlignment := $FFFFEFF4; 文字垂直居中:Excelid.worksheets[1].Rows[1].VerticalAlignment := $FFFFEFF4; 9、 插入一行或一列:a. ExcelApp.ActiveSheet.Rows[2].Insert; b. ExcelApp.ActiveSheet.Columns[1].Insert; 10、 刪除一行或一列:a. ExcelApp.ActiveSheet.Rows[2].Delete; b. ExcelApp.ActiveSheet.Columns[1].Delete; 11、合并單元格:ExcelApp.worksheets[1].range[A1:F8'].Merge(abc);注:要聲明變量abc: Variant; 12、豎行顯示文字:ExcelApp.worksheets[1].Cells.Item[1,1].Orientation:= xlVertical; 13、單元格加邊線:ExcelApp.worksheets[1].Range[A1:F8].Borders.LineStyle := 1; 14、在第8行之前插入分頁符:ExcelApp.WorkSheets[1].Rows[8].PageBreak := 1; 15、在第4列之前刪除分頁符:ExcelApp.ActiveSheet.Columns[4].PageBreak := 0; 16、指定邊框線寬度:ExcelApp.ActiveSheet.Range[ 'B3:D4' ].Borders[2].Weight := 3; 1-左 2-右 3-頂 4-底 5-斜( \ ) 6-斜( / ) 17、拷貝操作:a.拷貝整個工作表:ExcelApplication1.ActiveSheet.Used.Range.Copy; b.拷貝指定區域:ExcelApplication1.ActiveSheet.Range[ 'A1:E2' ].Copy; c.從A1位置開始粘貼:ExcelApplication1.ActiveSheet.Range.[ 'A1' ].PasteSpecial; d.從文件尾部開始粘貼:ExcelApplication1.ActiveSheet.Range.PasteSpecial; 18、清除第一行第四列單元格公式:ExcelApp.ActiveSheet.Cells[1,4].ClearContents; 19、工作表保存:if not ExcelApp.ActiveWorkBook.Saved thenExcelApp.ActiveSheet.PrintPreview; 20、工作表另存為:ExcelApp.SaveAs( 'C:\Excel\Demo1.xls' ); 21、放棄存盤:ExcelApp.ActiveWorkBook.Saved := True; 22、關閉工作簿:ExcelApp.WorkBooks.Close; 23、退出 Excel:ExcelApp.Quit; 下面是有關打印頁面控制的語句: 24、設置第一行字體屬性:ExcelApp.ActiveSheet.Rows[1].Font.Name := '隸書'; ExcelApp.ActiveSheet.Rows[1].Font.Color := clBlue; ExcelApp.ActiveSheet.Rows[1].Font.Bold := True; ExcelApp.ActiveSheet.Rows[1].Font.UnderLine := True; ExcelApp.ActiveSheet.Rows[1].Font.size:=10; 25、進行頁面設置:a.頁眉:ExcelApp.ActiveSheet.PageSetup.CenterHeader := '報表演示'; b.頁腳:ExcelApp.ActiveSheet.PageSetup.CenterFooter := '共&N頁 第&P頁'; c.頁眉到頂端邊距2cm:ExcelApp.ActiveSheet.PageSetup.HeaderMargin := 2/0.035; d.頁腳到底端邊距3cm:ExcelApp.ActiveSheet.PageSetup.HeaderMargin := 3/0.035; e.頂邊距2cm:ExcelApp.ActiveSheet.PageSetup.TopMargin := 2/0.035; f.底邊距2cm:ExcelApp.ActiveSheet.PageSetup.BottomMargin := 2/0.035; g.左邊距2cm:ExcelApp.ActiveSheet.PageSetup.LeftMargin := 2/0.035; h.右邊距2cm:ExcelApp.ActiveSheet.PageSetup.RightMargin := 2/0.035; i.頁面水平居中:ExcelApp.ActiveSheet.PageSetup.CenterHorizontally := 2/0.035; j.頁面垂直居中:ExcelApp.ActiveSheet.PageSetup.CenterVertically := 2/0.035; k.打印單元格網線:ExcelApp.ActiveSheet.PageSetup.PrintGridLines := True; 26、打印預覽工作表:ExcelApp.ActiveSheet.PrintPreview; 27、打印輸出工作表:ExcelApp.ActiveSheet.PrintOut; 對Excel的其他控制: 28、excel的多單元格合計功能:ExcelApp..Cells[ARow, ACol].Formula := '= SUM($+IntToStr(BeginRow) +:$ + IntToStr(EndRow) +'); 注:聲明變量ARow, ACol: Integer; 29、打開已經存在的Excel文件: ExcelApplication1.Workbooks.Open (c:\a.xls EmptyParam,EmptyParam,EmptyParam,EmptyParam, EmptyParam,EmptyParam,EmptyParam,EmptyParam, EmptyParam,EmptyParam,EmptyParam,EmptyParam,0);

轉載于:https://www.cnblogs.com/gc2013/p/3963762.html

總結

以上是生活随笔為你收集整理的Winform 导出成Excel打印代码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。