轉(zhuǎn)帖|使用教程|編輯:龔雪|2016-12-09 11:49:08.000|閱讀 1322 次
概述:本文章主要是講述將DevExpress Winform 的所有可打印控件的導(dǎo)出excel 的可行方法,并且還能解決DevExpress控件本身自帶的一些問題,具體能夠解決以下幾個(gè)問題: 1)GridControl 的BandGridView 多表頭無法導(dǎo)出; 2)GridControl自帶方法無法導(dǎo)出圖片; 3)支持多個(gè)控件一同導(dǎo)出同一個(gè)excel; 4)PivotGridControl導(dǎo)出時(shí)候自動(dòng)分組。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
// <summary> /// DevExpress通用導(dǎo)出Excel,支持多個(gè)控件同時(shí)導(dǎo)出在同一個(gè)Sheet表 /// eg:ExportToXlsx("",gridControl1,gridControl2); /// 將gridControl1和gridControl2的數(shù)據(jù)一同導(dǎo)出到同一張工作表 /// </summary> /// <param name="title">文件名</param> /// <param name="panels">控件集</param> public void ExportToExcel(string title, params IPrintable[] panels) { SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.FileName = title; saveFileDialog.Title = "導(dǎo)出Excel"; saveFileDialog.Filter = "Excel文件(*.xlsx)|*.xlsx|Excel文件(*.xls)|*.xls"; DialogResult dialogResult = saveFileDialog.ShowDialog(); if (dialogResult == DialogResult.Cancel) return; string FileName = saveFileDialog.FileName; PrintingSystem ps = new PrintingSystem(); CompositeLink link = new CompositeLink(ps); ps.Links.Add(link); foreach (IPrintable panel in panels) { link.Links.Add(CreatePrintableLink(panel)); } link.Landscape = true;//橫向 //判斷是否有標(biāo)題,有則設(shè)置 //link.CreateDocument(); //建立文檔 try { int count = 1; //在重復(fù)名稱后加(序號(hào)) while (File.Exists(FileName)) { if (FileName.Contains(").")) { int start = FileName.LastIndexOf("("); int end = FileName.LastIndexOf(").") - FileName.LastIndexOf("(") + 2; FileName = FileName.Replace(FileName.Substring(start, end), string.Format("({0}).", count)); } else { FileName = FileName.Replace(".", string.Format("({0}).", count)); } count++; } if (FileName.LastIndexOf(".xlsx") >= FileName.Length - 5) { XlsxExportOptions options = new XlsxExportOptions(); link.ExportToXlsx(FileName, options); } else { XlsExportOptions options = new XlsExportOptions(); link.ExportToXls(FileName, options); } if (DevExpress.XtraEditors.XtraMessageBox.Show("保存成功,是否打開文件?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes) System.Diagnostics.Process.Start(FileName);//打開指定路徑下的文件 } catch (Exception ex) { DevExpress.XtraEditors.XtraMessageBox.Show(ex.Message); } } /// <summary> /// 創(chuàng)建打印Componet /// </summary> /// <param name="printable"></param> /// <returns></returns> PrintableComponentLink CreatePrintableLink(IPrintable printable) { ChartControl chart = printable as ChartControl; if (chart != null) chart.OptionsPrint.SizeMode = DevExpress.XtraCharts.Printing.PrintSizeMode.Stretch; PrintableComponentLink printableLink = new PrintableComponentLink() { Component = printable }; return printableLink; }
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:CSDN