亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > .NET > 正文

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

2024-07-10 13:27:36
字體:
來源:轉載
供稿:網友
將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文件的樣式,
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品国产欧美成人夜夜嗨| 成人午夜在线观看| 欧美极品少妇与黑人| 日韩欧美aⅴ综合网站发布| 欧美多人乱p欧美4p久久| 91在线国产电影| 欧洲成人免费视频| 欧美日韩亚洲网| 欧美性xxxxxx| 国产亚洲欧美日韩精品| 一区二区欧美激情| 久久精品小视频| 久久久久女教师免费一区| 国产欧美精品一区二区| 精品中文字幕在线观看| 国产精品视频一区二区高潮| 亚洲国产日韩欧美综合久久| 久久精品久久精品亚洲人| 性欧美激情精品| 亚洲女人被黑人巨大进入al| 黑人精品xxx一区一二区| 全色精品综合影院| 日韩av在线播放资源| 在线电影中文日韩| 国产亚洲激情在线| 久久亚洲春色中文字幕| 国产亚洲欧洲高清| 一本色道久久综合亚洲精品小说| 日韩在线观看视频免费| 国产精欧美一区二区三区| 欧亚精品中文字幕| 国产精品日韩精品| 久久全球大尺度高清视频| 98视频在线噜噜噜国产| 97国产精品视频人人做人人爱| 国产综合色香蕉精品| 久久精品国产亚洲精品2020| 亚洲成av人乱码色午夜| 亚洲国产欧美一区| 国产精品久久久av| 欧美激情国内偷拍| 91天堂在线视频| 影音先锋日韩有码| 欧美极品美女电影一区| 久久国产精品网站| 亚洲成人黄色在线| 国产精品尤物福利片在线观看| 成人av番号网| 久热精品在线视频| 亚洲在线观看视频网站| 日本在线观看天堂男亚洲| 亚洲国产又黄又爽女人高潮的| 国产伊人精品在线| 欧美激情一区二区久久久| 国产69精品久久久| 欧美在线视频a| 日韩在线欧美在线| 国产亚洲精品成人av久久ww| 91po在线观看91精品国产性色| 国产在线高清精品| 欧美日韩在线一区| 亚洲激情小视频| 国产成人午夜视频网址| 亚洲第一天堂无码专区| 日韩av综合网| www.日韩.com| 日韩人在线观看| 久久久视频在线| 91在线观看免费高清完整版在线观看| 欧美国产欧美亚洲国产日韩mv天天看完整| 91在线高清免费观看| 69久久夜色精品国产69乱青草| 久久亚洲国产成人| 国产精品电影一区| 亚洲香蕉成人av网站在线观看| 精品久久久久久亚洲精品| 国产小视频91| 久久免费视频网| 欧美激情成人在线视频| 欧美日韩国产影院| 国产欧美精品一区二区三区-老狼| 一区二区av在线| 欧美激情中文网| 中文字幕九色91在线| 欧美日韩国产精品一区二区不卡中文| 欧美黑人又粗大| 久久精品国产成人| 久久99国产精品久久久久久久久| 538国产精品一区二区在线| 欧美黄色片在线观看| 亚州av一区二区| 国产精品91久久久| 国产精品久久久久av| 日韩av片电影专区| 日韩精品极品视频免费观看| 色噜噜狠狠狠综合曰曰曰88av| 日韩欧美高清在线视频| www高清在线视频日韩欧美| 欧美亚洲成人免费| 日韩成人小视频| 精品视频中文字幕| 国产一区二区丝袜| 国产精品三级网站| 欧美视频一二三| 深夜成人在线观看| 亚洲国内高清视频| 日本久久久久久久久久久| 久久久久久国产精品三级玉女聊斋| 国产精品一区二区三区久久| 精品成人69xx.xyz| 成人激情免费在线| 国产精品久久久久久久久男| 亚洲日韩欧美视频一区| 亚洲国产精品久久久久| 亚洲午夜国产成人av电影男同| 亚洲91精品在线观看| 国产成+人+综合+亚洲欧美丁香花| 国产精品美女在线观看| 欧美最猛性xxxx| 亚洲欧美国产一区二区三区| 日韩成人中文电影| 国产日韩精品综合网站| 欧美大片免费观看| 亚洲人成在线观看网站高清| 欧美视频不卡中文| 尤物yw午夜国产精品视频| 在线播放日韩专区| 精品久久久久人成| 久久天天躁狠狠躁夜夜躁| 久久久久久久一区二区| 亚洲精品视频中文字幕| 91极品女神在线| 日韩在线视频观看正片免费网站| 色噜噜国产精品视频一区二区| 国产精品6699| 黑人巨大精品欧美一区免费视频| 91亚洲人电影| 欧美黄色免费网站| 欧美一区三区三区高中清蜜桃| 久久精品91久久香蕉加勒比| 国产va免费精品高清在线| 热久久视久久精品18亚洲精品| 亚洲国产又黄又爽女人高潮的| 亚洲精品日韩丝袜精品| 亚洲精品一区二三区不卡| 国产精品久久久久久超碰| 91香蕉亚洲精品| 亚洲国产成人精品久久| 国产成人小视频在线观看| 久久在线免费观看视频| 久久九九热免费视频| 日本精品视频在线播放| 一本色道久久88综合日韩精品| 国内精品久久久久久中文字幕| 国产成+人+综合+亚洲欧美丁香花| 日韩免费av片在线观看| 日韩美女毛茸茸| 欧美午夜丰满在线18影院| 国产日韩精品在线| 亚洲成人1234| 久久久亚洲国产| 亚洲国产精品电影| 久久久免费观看| 久久久国产视频|