程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> GridView完美快速導出到Excel(超強)

GridView完美快速導出到Excel(超強)

編輯:.NET實例教程

好多人都要把GridvIEw的數據導出到Excel的功能,有好多方法,最笨的就是一個一個cell讀取,然後再一個一個填充的Excel中,經過我無數次(也不是了,但確實費了很大功夫)終於實現了。

基本思路就是先把GridVIEw全部選中,然後復制到剪貼板,然後再粘貼到Excel中,就這麼簡單。

全部選中:

this.DataGridVIEw1.SelectAll();

復制到剪貼板:

this.DataGridVIEw1.GetClipboardContent().GetData(DataFormats.Text) ;

粘貼到Excel:

 



object oMissing = System.Reflection.Missing.Value;
            try
            ...{
                excel = new GoldPrinter.ExcelExpert.ExcelBase();
                Excel.Visible = false;
                Excel.Open();
                Excel.Caption = "查詢結果";
                Excel.Worksheet xlWorksheet = Excel.WorkSheets.ActiveSheet;                

                System.Windows.Forms.Clipboard.SetDataObject("");
                this.DataGridVIEw1.GetClipboardContent().GetData(DataFormats.Text);
                ((Excel.Range)xlWorksheet.Cells[1, 1]).Select();
                xlWorksheet.Paste(oMissing, oMissing);
                System.Windows.Forms.Clipboard.SetDataObject("");
                
                Excel.Visible = true;
                xlWorksheet = null;
                Excel = null;
            }
            catch
            ...{
            }

 

結果總是報錯,難道有錯嗎,仔細查看代碼,發現錯誤再xlWorksheet.Paste(oMissing, oMissing)句時出現,難道不能粘切嗎,太失望了,查MSDN,沒發現什麼有價值的東西。自己試驗,發現如果剪貼板中時純文本就不會就問題,那麼就好辦了,把該句修改Clipboard.SetText(this.DataGridVIEw1.GetClipboardContent().GetData(DataFormats.Text).ToString()); 一切OK!收工回家。

完整代碼:

 



public void ExpExcel()
        ...{
            object oMissing = System.Reflection.Missing.Value;
            try
            ...{
                excel = new GoldPrinter.ExcelExpert.ExcelBase();
                Excel.Visible = false;
                Excel.Open();
                Excel.Caption = "查詢結果";
                Excel.Worksheet xlWorksheet = Excel.WorkSheets.ActiveSheet;                

                System.Windows.Forms.Clipboard.SetDataObject("");
                Clipboard.SetText(this.DataGridVIEw1.GetClipboardContent().GetData(DataFormats.Text).ToString());
                ((Excel.Range)xlWorksheet.Cells[1, 1]).Select();
                xlWorksheet.Paste(oMissing, oMissing);
                System.Windows.Forms.Clipboard.SetDataObject("");               
                Excel.Visible = true;
                xlWorksheet = null;
                Excel = null;
            }
            catch
            ...{
            }
        }

說明:GoldPrinter是用了“長江支流”的金質打印通Excel操作類,在此一同表示感謝!


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved