Winfrom - DataGridView导出数据到Excel
1、Microsoft.Office.Interop.Excel.dll库
Microsoft.Office.Interop.Excel.dll 在VS中已自带,不需要再在网上下载。
引用方法:引用--扩展集,VS已自带Excel的dll库。
using Microsoft.Office.Interop.Excel;
private void btnExport_Click(object sender, EventArgs e)
{
string fileName = "统计表.xls";
ExportExcels(fileName, dataGridView1);
}
private const int OLDOFFICEVESION = -4143;
private const int NEWOFFICEVESION = 56;
private void ExportExcels(string fileName, DataGridView myDGV)
{
string saveFileName = "";
SaveFileDialog saveDialog = new SaveFileDialog();
saveDialog.DefaultExt = "xls";
saveDialog.Filter = "Excel文件|*.xls";
saveDialog.FileName = fileName;
saveDialog.ShowDialog();
saveFileName = saveDialog.FileName;
if (saveFileName.IndexOf(":") < 0) return; //被点了取消
Application xlApp = new Application();
if (xlApp == null)
{
MessageBox.Show("无法创建Excel对象,可能您的机子未安装Excel");
return;
}
Workbooks workbooks = xlApp.Workbooks;
Workbook workbook = workbooks.Add(XlWBATemplate.xlWBATWorksheet);
Worksheet worksheet = (Worksheet)workbook.Worksheets[1];//取得sheet1
Get excel Version
string Version = xlApp.Version;
//保存excel文件的格式
int FormatNum;
if (Convert.ToDouble(Version) < 12)
{
//使用Excel 97-2003
FormatNum = OLDOFFICEVESION;
}
else
{
//使用 excel 2007或更新
FormatNum = NEWOFFICEVESION;
}
//写入标题
for (int i = 0; i < myDGV.ColumnCount; i++)
{
worksheet.Cells[1, i + 1] = myDGV.Columns[i].HeaderText;
}
//写入数值
for (int r = 0; r < myDGV.Rows.Count; r++)
{
for (int i = 0; i < myDGV.ColumnCount; i++)
{
worksheet.Cells[r + 2, i + 1] = myDGV.Rows[r].Cells[i].Value;
}
System.Windows.Forms.Application.