一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - 通過剪貼板實現將DataGridView中的數據導出到Excel

通過剪貼板實現將DataGridView中的數據導出到Excel

2019-12-03 12:10ASP.NET教程網 ASP.NET教程

這篇文章主要介紹了如何通過剪貼板實現將DataGridView中的數據導出到Excel,需要的朋友可以參考下

將DataGridView中的數據導出到Excel中有許多方法,常見的方法是使用Office COM組件將DataGridView中的數據循環復制到Excel Cell對象中,然后再保存整個Excel Workbook。但是如果數據量太大,例如上萬行數據或者有多個Excel Sheet需要同時導出,效率會比較低。可以嘗試使用異步操作或多線程的方式來解決UI死鎖的問題。 

這里介紹一種直接通過Windows剪貼板將數據從DataGridView導出到Excel的方法。代碼如下: 

復制代碼代碼如下:


using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using Excel = Microsoft.Office.Interop.Excel; 
using System.Reflection; 
using Microsoft.Office.Interop.Excel; 

namespace WindowsFormsApplication1 

public partial class Form1 : Form 

public Form1() 

InitializeComponent(); 
this.saveFileDialog1.Filter = "Excel Workbook|*.xlsx|Excel Macro-Enabled Workbook|*.xlsm|Excel 97-2003 Workbook|*.xls"; 
this.saveFileDialog1.FileName = "demo.xlsx"; 

LoadData(); 


private void LoadData() 

BindingList<Car> cars = new BindingList<Car>(); 

cars.Add(new Car("Ford", "Mustang", 1967)); 
cars.Add(new Car("Shelby AC", "Cobra", 1965)); 
cars.Add(new Car("Chevrolet", "Corvette Sting Ray", 1965)); 

this.dataGridView1.DataSource = cars; 


private void toolStripButton1_Click(object sender, EventArgs e) 

string filePath = string.Empty; 
if (this.saveFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) 

filePath = this.saveFileDialog1.FileName; 

else 

return; 


this.dataGridView1.SelectAll(); 
Clipboard.SetDataObject(this.dataGridView1.GetClipboardContent()); 

Excel.Application objExcel = null; 
Excel.Workbook objWorkbook = null; 
Excel.Worksheet objsheet = null; 
try 

objExcel = new Microsoft.Office.Interop.Excel.Application(); 
objWorkbook = objExcel.Workbooks.Add(Missing.Value); 
objsheet = (Excel.Worksheet)objWorkbook.ActiveSheet; 
objExcel.Visible = false; 

objExcel.get_Range("A1", System.Type.Missing).PasteSpecial(XlPasteType.xlPasteAll, XlPasteSpecialOperation.xlPasteSpecialOperationNone, Type.Missing, Type.Missing); 
objsheet.Name = "Demo"; 
//Set table properties 
objExcel.Cells.EntireColumn.AutoFit();//auto column width 
objExcel.Cells.VerticalAlignment = Microsoft.Office.Interop.Excel.Constants.xlCenter; 
objExcel.Cells.HorizontalAlignment = Microsoft.Office.Interop.Excel.Constants.xlLeft; 
objExcel.ErrorCheckingOptions.BackgroundChecking = false; 

//save file 
objWorkbook.SaveAs(filePath, Missing.Value, Missing.Value, Missing.Value, Missing.Value, 
Missing.Value, Excel.XlSaveAsAccessMode.xlShared, Missing.Value, Missing.Value, Missing.Value, 
Missing.Value, Missing.Value); 

catch (Exception error) 

MessageBox.Show(error.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); 
return; 

finally 

//Dispose the Excel related objects 
if (objWorkbook != null) 

objWorkbook.Close(Missing.Value, Missing.Value, Missing.Value); 

if (objExcel.Workbooks != null) 

objExcel.Workbooks.Close(); 

if (objExcel != null) 

objExcel.Quit(); 


objsheet = null; 
objWorkbook = null; 
objExcel = null; 
GC.Collect(); // force final cleanup. 




public class Car 

private string _make; 
private string _model; 
private int _year; 

public Car(string make, string model, int year) 

_make = make; 
_model = model; 
_year = year; 


public string Make 

get { return _make; } 
set { _make = value; } 


public string Model 

get { return _model; } 
set { _model = value; } 


public int Year 

get { return _year; } 
set { _year = value; } 



導出數據到Excel的操作在事件toolStripButton1_Click中,代碼的第49行和50行是將DataGridView當前選中的行復制到系統剪貼板中,62行將剪貼板中的內容粘貼到Excel默認Sheet的A1單元格中。Excel會自動格式化將粘貼的內容,如下圖。 
通過剪貼板實現將DataGridView中的數據導出到Excel

使用剪貼板導出數據過程比較簡單,省去了對Excel對象的遍歷和操作,缺點是無法對導出的數據進行格式和樣式的設置。如果需要對導出的數據進行樣式設置,可以嘗試使用OpenXML的方式來修改Excel文件的樣式.

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产九九在线观看播放 | 变态 另类 国产 亚洲 | 成人免费体验区福利云点播 | 九九精品视频在线观看九九 | 亚洲国产精品自在自线观看 | 亚洲图片一区二区三区 | 亚洲国产在线观看免费视频 | 国语自产自拍秒拍在线视频 | 国产精品女主播大秀在线 | 草草视频在线免费观看 | 啊啊啊好大视频 | 麻豆小视频在线观看 | 国产成人高清亚洲一区91 | 国产精品免费综合一区视频 | 男女激情网 | 国产一久久香蕉国产线看观看 | 4444www免费看| 范冰冰上面好大下面好紧 | 国产精品区牛牛影院 | 亚洲国产在线 | 日本三级欧美三级人妇英文 | 日本在线小视频 | 欧美亚洲国产综合在线 | 四虎免费在线观看视频 | 无码欧美喷潮福利XXXX | 青草视频网站 | 国产精品每日在线观看男人的天堂 | 日韩国产成人精品视频人 | 91真人毛片一级在线播放 | 日韩在线成人 | 国产成人福利免费观看 | 青青青久热国产精品视频 | 亚州笫一色惰网站 | 女人c交zzzooo在线观看 | 国产成人精品一区二区不卡 | 亚洲精品一区波多野结衣 | 日韩亚洲国产欧美精品 | 天天综合天天综合色在线 | 国产人成精品午夜在线观看 | 成年人在线免费观看视频网站 | 四虎永久免费地址在线网站 |