具体实例如下:
1.先去导入dll库:Microsoft.Office.Interop.Excel.dl
2.然后再去写代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Office.Interop;
using Microsoft.Office.Interop.Excel;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;
public class ExprotToExcel
{
public void DataToExcel(DataGridView dgv,ToolStripProgressBar tempProgressBar,ToolStripStatusLabel toolstrip)
{
if (dgv.Rows.Count == 0)
{
MessageBox.Show("无数据"); return;
}
MessageBox.Show("开始生成要导出的数据", "导出提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
Excel.Application excel = new Excel.Application();
excel.Application.Workbooks.Add(true);
excel.Visible = false;
for (int i = 0; i < dgv.ColumnCount; i++)
excel.Cells[1, i + 1] = dgv.Columns[i].HeaderText;
tempProgressBar.Visible = true;
tempProgressBar.Minimum = 1;
tempProgressBar.Maximum = dgv.RowCount;
tempProgressBar.Step = 1;
toolstrip.Visible = true;
for (int i = 0; i < dgv.RowCount; i++)
{
for (int j = 0; j < dgv.ColumnCount; j++)
{
if (dgv[j, i].ValueType == typeof(string))
{
excel.Cells[i + 2, j + 1] = "'" + dgv[j, i].Value.ToString();
}
else
{
excel.Cells[i + 2, j + 1] = dgv[j, i].Value.ToString();
}
}
toolstrip.Text = "|| 状态:正在生成第 "+i+"/"+dgv.RowCount+" 个";
tempProgressBar.Value = i + 1;
}
toolstrip.Text = "|| 状态:生成成功!";
MessageBox.Show("生成成功,请保存。","生成提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
excel.Visible = true;
}
}
3.打开后,效果如下:
OpenFileDialog openfile = new OpenFileDialog();
openfile.DefaultExt = "xls";
openfile.Filter = "Excel文件|*.xls";
if (openfile.ShowDialog() == DialogResult.OK)
{
string s;
s = openfile.FileName.ToString();
string strCon = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + s + ";Extended properties=Excel 8.0";
OleDbConnection myconn = new OleDbConnection(strCon);
string strcom = "select * from [Sheet1$]";
myconn.Open();
OleDbCommand comm = new OleDbCommand(strcom, myconn);
OleDbDataAdapter da = new OleDbDataAdapter();
da.SelectCommand = comm;
myconn.Close();
DataSet ds1 = new DataSet();
da.Fill(ds1, "[Sheet1$]");
dataGridView1.DataSource = ds1.Tables[0];
}
}
catch (Exception e1) { MessageBox.Show(e1.Message); }
为方便使用,写成方法如下:
public void DGToExcel(System.Web.UI.Control ctl)
{
HttpContext.Current.Response.AppendHeader("Content-Disposition","attachment;filename=Excel.xls");
HttpContext.Current.Response.Charset ="UTF-8";
HttpContext.Current.Response.ContentEncoding =System.Text.Encoding.Default;
HttpContext.Current.Response.ContentType ="application/ms-excel";
ctl.Page.EnableViewState =false;
System.IO.StringWriter tw = new System.IO.StringWriter() ;
System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter (tw);
ctl.RenderControl(hw);
HttpContext.Current.Response.Write(tw.ToString());
HttpContext.Current.Response.End();
}
用法:DGToExcel(datagrid1);
MSDN文档
http://support.microsoft.com/default.aspx?scid=kb;zh-cn;306023#top
多种方法介绍以及代码示例,看看吧