c# 怎么把dataGridView的数据 用Excel导出! 详细点啊
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# 怎么把dataGridView的数据 用Excel导出! 详细点啊相关的知识,希望对你有一定的参考价值。
小弟初学~ 要引用什么也要说哦!
具体实例如下:
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.打开后,效果如下:
参考技术A 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); 参考技术B 为方便使用,写成方法如下:
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); 参考技术C MSDN文档
http://support.microsoft.com/default.aspx?scid=kb;zh-cn;306023#top
多种方法介绍以及代码示例,看看吧
c# winform中dataGridView的复选框只能选一个,代码怎么写?
好麻烦,百度了几个都是有问题的。。。谁能帮我解决一下?
//用CellContentClick事件private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
if (e.ColumnIndex == 0 && e.RowIndex >= 0) //如果选择所属的列是第1列那么 ColumnIndex == 0
foreach (DataGridViewRow row in dataGridView1.Rows) row.Cells[e.ColumnIndex].Value = false;
dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = true;
参考技术A 你是想要单选框的功能的吗 选中一个其他的不选中???那么你就移除掉其他的就可以了
以上是关于c# 怎么把dataGridView的数据 用Excel导出! 详细点啊的主要内容,如果未能解决你的问题,请参考以下文章
c#中 , 我用 dataGridView1控件把access中的数据显示出来了!,,现在 我 想用一个删除其中一行怎么操作