【C#】【Winfrom】DataGridView数据导出到Excel

本文介绍了三种在C# Winform应用程序中将DataGridView数据导出到Excel的方法:使用内置的Microsoft.Office.Interop.Excel.dll库,利用文件流形式以及使用第三方库NPOI。文中指出了每种方法的优缺点,如内部库可能导致速度下降,文件流无法设置Excel格式等。
摘要由CSDN通过智能技术生成

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.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值