c#中datagridview数据导出到excel源码

private void button5_Click_1(object sender, Reenters e)
  {
  //watercolorist
  Excel.Application excel = new Excel.Application();
  excel.Application.Workbooks.Add(true);
  //生成字段名称
  for (int i = 0; i < dataGridView2.ColumnCount; i++)
  {
  excel.Cells[1,i + 1] = dataGridView2.Columns[i].HeaderText;
  if (y == 0)
  {
  y = 1;
  toolStripStatusLabel6.Text = "数据导入中,请等待!";
  }
  }
  //填充数据
  for (int i = 0; i < dataGridView2.RowCount - 1; i++)
  {
  for (int j = 0; j < dataGridView2.ColumnCount; j++)
  {
  if (dataGridView2[j, i].Value == typeof(string))
  {
  excel.Cells[i + 2, j + 1] = "" + dataGridView2[i, j].Value.ToString();
  }
  else
  {
  excel.Cells[i + 2, j + 1] = dataGridView2[j, i].Value.ToString();
  }
  }
  }
excel.Visible = true;
  }

 

===================================================================


[原创]万能,高效-C#导出数据到Excel2008年03月18日 星期二 下午 12:56 class CommanPrint
  {
  /// <summary>
  /// 导出Excel 

  /// 版权所有 : 天山寒雪 QQ:757015000 MSN: haijun.qin@hotmail.com

  /// </summary>
  /// <param name="mydgv">控件 DataGridView</param>
  /// <param name="dic">中英文对照的标题</param>
  public static void ExportTasks(DataGridView mydgv, Dictionary<string, string> dic)
  {
  // 定义要使用的Excel 组件接口
  // 定义Application 对象,此对象表示整个Excel 程序
  Microsoft.Office.Interop.Excel.Application excelApp = null;
  // 定义Workbook对象,此对象代表工作薄
  Microsoft.Office.Interop.Excel.Workbook workBook;
  // 定义Worksheet 对象,此对象表示Execel 中的一张工作表
  Microsoft.Office.Interop.Excel.Worksheet ws = null;
  //定义Range对象,此对象代表单元格区域
  Microsoft.Office.Interop.Excel.Range range;

  int dcell = 1;
  int rowindex = 0; int colindex = 0;

  int rowcount = mydgv.Rows.Count;
  int colcount = mydgv.Columns.Count;
  int dispcolcount = dic.Count;
  try
  {
  //初始化 Application 对象 excelApp
  excelApp = new Microsoft.Office.Interop.Excel.Application();
  //在工作薄的第一个工作表上创建任务列表
  workBook = excelApp.Workbooks.Add(XlWBATemplate.xlWBATWorksheet);
  ws = (Worksheet)workBook.Worksheets[1];

  // 命名工作表的名称为
  ws.Name = "Sheet1";
  //创建缓存
  Object[,] objdata = new object[rowcount + 1, colcount];
  //创建标题
  foreach (string s in dic.Keys)
  {
  objdata[rowindex, colindex++] = dic[s].ToString();
  }
  //获取数据
  for (int i = 0; i < rowcount; i++)
  {
  dcell = 0;
  foreach (string ss in dic.Keys)
  {
  for (int j = 0; j < colcount; j++)
  {
  if (mydgv.Columns[j].Name == ss)
  {
  objdata[i + 1, dcell++] = mydgv.Rows[i].Cells[j].FormattedValue.ToString(); //得到样式之后的值
  }
  }
  }
  }
  //写入Excel  
  range = ws.get_Range(excelApp.Cells[1, 1], excelApp.Cells[rowcount, dispcolcount]);
  range.Value2 = objdata;
  System.Windows.Forms.Application.DoEvents();
  //设置格式
  excelApp.Cells.HorizontalAlignment = Microsoft.Office.Interop.Excel.Constants.xlLeft; //全局左对齐
  excelApp.Cells.EntireColumn.AutoFit();
  range = ws.get_Range(excelApp.Cells[1, 1], excelApp.Cells[1, colcount]);
  range.Font.Bold = true; //标题粗体
  //显示 Excel
  excelApp.Visible = true;

  }
  catch (Exception ex)
  {
  throw ex;
  }

 

============================================================


using System;
using System.Collections.Generic;
using System.Text;
using System.Web.UI.WebControls;
using System.Data;
using System.Web.UI.HtmlControls;

namespace Common
{
    public class ExcelHelper
    {
        // Excel导出
        public static void Export(GridView dgExport, DataTable dtData)
        {
            System.Web.HttpContext curContext = System.Web.HttpContext.Current;
            // IO用于导出并返回excel文件
            System.IO.StringWriter strWriter = null;
            System.Web.UI.HtmlTextWriter htmlWriter = null;

            if (dtData != null)
            {
                // 设置编码和附件格式
                curContext.Response.Clear();
                curContext.Response.ClearContent();
                curContext.Response.Buffer = true;
                curContext.Response.ContentType = "application/vnd.ms-excel";
                curContext.Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-7");
                curContext.Response.Charset = "GB2312";
                curContext.Response.AppendHeader("content-disposition", "filename=\"" + System.Web.HttpUtility.UrlEncode(dtData.TableName, System.Text.Encoding.UTF8) + ".xls\"");


                // 导出excel文件
                strWriter = new System.IO.StringWriter();
                htmlWriter = new System.Web.UI.HtmlTextWriter(strWriter);

                HtmlForm frm = new HtmlForm();
                frm.Attributes["runat"] = "server";
                frm.Controls.Add(dgExport);


                dgExport.DataSource = dtData.DefaultView;
                dgExport.DataBind();
                // 返回客户端
                dgExport.RenderControl(htmlWriter);
                curContext.Response.Write(strWriter.ToString());
                curContext.Response.End();
            }
        }
    }
}

 

 

 

posted @ 2012-01-29 10:02  shyscool  阅读(706)  评论(0编辑  收藏  举报