1. 程式人生 > >dev多控制元件匯出到Excel多個sheet頁

dev多控制元件匯出到Excel多個sheet頁

        多個GridControl匯出到一個Excel的一個或多個sheet頁
    多個DEV控制元件匯出到一個Excel的一個或者多個sheet頁
/// <summary>
        /// DevExpress控制元件通用匯出Excel,支援多個控制元件同時匯出在同一個Sheet表或者分不同工作薄
        /// eg:ExportToXlsx("test",true,"控制元件",gridControl1,gridControl2);
        /// 將gridControl1和gridControl2的資料一同匯出到同一個檔案不同的工作薄
        /// eg:ExportToXlsx("test",false,"",gridControl1,gridControl2);
        /// 將gridControl1和gridControl2的資料一同匯出到同一個檔案同一個的工作薄
        /// <param name="title">檔名</param>
        /// <param name="isPageForEachLink">多個列印控制元件是否分多個工作薄顯示</param>
        /// <param name="sheetName">工作薄名稱</param>
        /// <param name="printables">控制元件集 eg:GridControl,PivotGridControl,TreeList,ChartControl...</param>
        public static void ExportToExcel(string title, bool isPageForEachLink, string sheetName, params DevExpress.XtraPrinting.IPrintable[] printables)
        {
            SaveFileDialog saveFileDialog = new SaveFileDialog()
            {
                FileName = title,
                Title = "匯出Excel",
                Filter = "Excel檔案(*.xlsx)|*.xlsx|Excel檔案(*.xls)|*.xls"
            };
            DialogResult dialogResult = saveFileDialog.ShowDialog();
            if (dialogResult == DialogResult.Cancel)
                return;
            string FileName = saveFileDialog.FileName;
            DevExpress.XtraPrintingLinks.CompositeLink link = new DevExpress.XtraPrintingLinks.CompositeLink(new DevExpress.XtraPrinting.PrintingSystem());
            foreach (var item in printables)
            {
                var plink = new DevExpress.XtraPrinting.PrintableComponentLink() { Component = item };
                link.Links.Add(plink);
            }
            if (isPageForEachLink)//15.1 的Xls不支援這個功能,15.2未知
                link.CreatePageForEachLink();
            if (string.IsNullOrEmpty(sheetName)) sheetName = "Sheet";//預設工作薄名稱
            try
            {
                int count = 1;
                //在重複名稱後加(序號)
                while (System.IO.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)
                {
                    DevExpress.XtraPrinting.XlsxExportOptions options = new DevExpress.XtraPrinting.XlsxExportOptions() { SheetName = sheetName };
                    if (isPageForEachLink)
                        options.ExportMode = DevExpress.XtraPrinting.XlsxExportMode.SingleFilePageByPage;
                    link.ExportToXlsx(FileName, options);
                }
                else
                {
                    DevExpress.XtraPrinting.XlsExportOptions options = new DevExpress.XtraPrinting.XlsExportOptions() { SheetName = sheetName };
                    if (isPageForEachLink) //15.Xls沒有這個屬性,15.2未知
                        options.ExportMode = DevExpress.XtraPrinting.XlsExportMode.SingleFilePageByPage;
                    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);
            }
        }

相關推薦

dev控制元件匯出Excelsheet

多個GridControl匯出到一個Excel的一個或多個sheet頁 多個DEV控制元件匯出到一個Excel的一個或者多個sheet頁/// <summary> /// DevExpress控制元件通用匯出Excel,支援

基於C#語言MVC框架NPOI控制元件匯出Excel表資料

控制元件bin檔案下載地址:https://download.csdn.net/download/u012949335/10610726 @{ ViewBag.Title = "dcxx"; } <script type="text/javascript"

Jqgrid表格控制元件匯出excel檔案

Jqgrid匯出excel實現思路: 1、根據jqgrid表頭樣式,使用jquery獲取表頭樣式。為保證對合並單元格表頭的相容,實現中沒有使用到jqgrid原聲api獲取colName等資訊。 2、匯出檔案內容使用xml格式檔案。 3、在前頭頁面生成檔案內容,然後將生成

DEVxtrareport匯出excel,sheet匯出

report1.CreateLayoutViewDocument();  report2.CreateLayoutViewDocument();             report3.CreateLayoutViewDocument();             repo

.net NPOI匯出EXCELsheet

protected void Button3_Click(object sender, EventArgs e) { DataTable dt = null; string tempprovince = "";

#Java--POI之Excel匯出工具類(支援sheet同時匯出

一、核心程式碼 package com.yx.yzh.utils; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.

C# 匯出Excel Sheet 和 單個Sheet

在工作中,會遇到這樣的需求,選取某一年,匯出選擇年份的月度、季度或者年度報表,月度報表不可能產生12個單獨的Excel,這樣的話客戶可能會和你拼命,將12個月份分為12個Sheet放在一個Excel裡面,可能客戶會請你吃飯。 目前的做法是根據選擇的年份,將該年份所有的資料全

DevExpress控制元件cxGrid實現列模糊匹配輸入的完美解決方案

本方案不需要修改控制元件原始碼,是完美解決cxgrid或TcxDBExtLookupComboBox支援多列模糊匹配快速輸入的最佳方案!! 小哥摸索多日,終於搞定cxgrid和TcxDBExtLookupComboBox可以支援多列模糊查詢輸入了! 縱觀網上的方案,不是

控制元件焦點迴圈移動

實現效果:    知識運用:   TextBox控制元件的Enter事件    //當該控制元件處於當前窗體的活動控制元件時發生   Leave事件          //當該控制元件不處於當前窗體的活動控制元件時發生   以及KeyDown事件      //在控制元件有焦點的情況下按下鍵時  

Android-防止使用者快速點選和控制元件點選

原地址簡書:http://www.jianshu.com/p/9d7df1895b72 1.為什麼要防止使用者重複點選 在使用者使用App的時候,並不會乖乖的按照我們的想法而執行。 下面就拿我們熟悉的Button來: 舉個栗子 假設這個Button的點選

Java SpringMVC專案匯出excel種類對應工具類整理(util)

上一章介紹如何匯入excel進系統處理成MAP集合(詳情請看上提供的連結),這次我又整理了一下如何快速匯出excel的工具。 1.匯出無表頭excel 檔案單個工作表(sheet),【fileName是標題名,titleList是列名,list就是

Butterknife @OnClick繫結控制元件id

package com.example.hh; import android.annotation.SuppressLint; import android.app.Activity; import android.graphics.drawable.Drawable;

js可選擇時分秒的日曆時間控制元件程式碼下載,瀏覽器IE8,9,10、谷歌chrome,火狐firefox等都是相容的

該空間相容性比較好!我試過很多瀏覽器IE8,9,10、谷歌 火狐等瀏覽器,都是相容的,只需要匯入WdatePicker.js檔案。在inputText控制元件的onclick事件加入onclick="WdatePicker( {el:this,dateFmt:'yyy

winfrom控制元件閃爍問題的解決

今天遇到空間閃爍問題,在網上找到各種辦法,什麼雙緩衝,慢繪製等等,發現都基本上不起作用。 最後找到一個解決辦法,非常好,所以就寫出來一塊分享一下。 只需要在類檔案裡新增這樣一個複寫方法:  protected override CreateParams CreatePara

Django--複用django自帶的控制元件

Django自帶的多對多控制元件雖然樣式普通,卻很實用,能避免程式設計師重複造輪子。 現在就詳解如何在前端頁面複用此控制元件,滿足自身開發需求。 首先,Djaong的templates中一般會有個base.html,是一切其他網頁的父類。在base.html中一定要加入:

下拉重新整理、上拉載入更控制元件實現原理及解析(一)

以前那個賬號,以後可能不用了,把文章搬過來!!! 效果預覽 接受hi大頭鬼hi的建議,來一個動態圖,方便大家知道這是個什麼東西。 動機 原理     無論是下拉重新整理還是上拉載入更多,原理都是在內容View(ListView、Re

ActiveX控制元件中使用執行緒導致的問題

用VC++6.0寫MFC ActiveX控制元件,就是實現個數據統計功能,呼叫SqlServer的儲存過程,計算量比較大,呼叫時間比較長,所以要把進度顯示出來(方法前文有述),用到多執行緒。需要線上程函式裡把計算的結果通過控制元件事件傳出去。 問題很奇怪,本來以為沒問題,使用

excel中利用vba合併sheet和合並excel文件

合併sheet頁, 合併excel文件, 合併工作表, 合併工作簿 合併工作表(sheet) 合併多個工作表 僅適用於每個sheet的第一行是資料頭,資料從第二行開始。 Sub 合併工作表()

Qt編寫自定義控制元件30-顏色型按鈕

一、前言 這個控制元件一開始打算用樣式表來實現,經過初步的探索,後面發現還是不夠智慧以及不能完全滿足需求,比如要在此控制元件設定多

duilib中將xml封裝為控制元件簡單示例(簡單自定義控制元件,封裝幾基本控制元件合為1自定義控制元件)

使用duilib的時候,難免會有這樣的需求: 某一塊Container(Layout)以及裡面的佈局需要重複用,不想每次都複製貼上這麼多,要不然xml太大了; 通過繼承來自定義一個控制元件,比如CButtonUIEx之類的,想讓他像button一樣在xml中被識別; xml裡面的東西