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中的数据显示出来了!,,现在 我 想用一个删除其中一行怎么操作

c#怎么获得dataGridView中指定的列的内容

c#怎么获得dataGridView中指定的列的内容

C# winform datagridview如何计算统计

C#里我要怎么清除DataGridView里的columns

datagridview怎么把一行数据复制到另一个datagridview [C# VS2005]