asp.net DataGridView导出到Excel的三个方法[亲测]

来源:脚本之家  责任编辑:小易  

真是巧,我昨天刚刚做了这个 public bool ExportDataGridview(DataGridView gridView, bool isShowExcle) { if (gridView.Rows.Count == 0) { return false; } //创建Excel对象 Microsoft.Office.Interop.Excel.Application excel = new Microso

#region DataGridView数据显示到Excel   

/// <summary>    

先获取grid的itemsouces转换Datatable #region 从DataSet到出到Excel /**/ /// /// 执行导出 /// /// 要导出的DataTable /// 要导出到的execl文件路径+文件名ps:如果是c/s程序,那您直接丢一openFileDialog就方便多了 /// 导出到的execl的Sheet

/// 打开Excel并将DataGridView控件中数据导出到Excel   

在抛出异常里面写一些代码, try { //没有数据的话就不往下执行 if (dataGridViewDevice.Rows.Count == 0) { return; } //实例化一个Excel.Application对象 excel = new Microsoft.Office.Interop.Excel.Application(); //让后台执行设置为不可

/// </summary>    

这里面有写好的,导入导出.你拷过去就可以用了. /// ///使用OLEDB方式读写Excel,不需要Office组件支持 /// class IOIEExcel { /************************************************************************************************************

/// <param name="dgv">DataGridView对象 </param>    

我昨天刚刚做了这个 public bool ExportDataGridview(DataGridView gridView, bool isShowExcle) { if (gridView.Rows.Count == 0) { return false; } //创建Excel对象 Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Offic

/// <param name="isShowExcle">是否显示Excel界面 </param>    

谢@悟空问答邀,曾经的高端王者现在变成了情怀的象征,想想也是唏嘘。几年前我选择备机的时候曾经在黑莓Q10和诺基亚Lumia928之间纠结▼(黑莓Q10▲)(Lumia928▲)长期以来,我是个Palm手机的忠实用户,Pixi+Pre2Veer包括未发布的TouchPadGo,我自己都有机器,甚至为了让Pre2电信版能变成自己的备机,自学了烧号,也透过一些渠道查了自己工作号码的五码不得不说那段用Pre2的时间真是美好的回忆。话说到这里,其实还没有回答问题对了,上面两部手机的选择中,最后我选择了Lumia928,无它,因为屏幕大,我放在车上导航也好看,而Q10由于全键盘的存在,放在支架

/// <remarks>   

排球女神张常宁晒出了和母亲的写真照片,两人彷如一对姐妹花,颜值惊人,百年都难得出一个的江南绝代美女一一张常宁!高颜值的母女两人彷佛是一个模子刻出来的,张常宁的妈妈尽显年轻。两人嘟嘴卖荫。在中国女排,魏秋月,惠若琪,张常宁,都是有名的大美女,三人谁最美?三人中,魏秋月最成熟知性,惠若琪美艳逗趣,张常宁仿如邻家女孩,是你更中意那一款类型的美女。

/// add com "Microsoft Excel 11.0 Object Library"   

目前常见的摩托车品牌有本田,雅马哈,铃木川崎。本田经久耐用,适合长期使用,比较保值。雅马哈是艺术家的摩托,稳定,技术新颖。铃木是未来思维,他敢于使用一切最新的技术,无论是否耐用。川崎的特点就是一个字快,就是为速度而生,非常的暴力,不适合初学者。如果想买进口车的话,3万块钱可能够呛,只能买水车了。买水车的风险很大,有可能被没收哦。那么可以考虑一下国产的大排量摩托车。3万左右应该能拿下,比如说春风650,春风650的提速还是挺不错的,质量方面也不错。下面我隆重推荐的还有一款是隆鑫650,他是宝马的发动机,意大利车架,福什么的电喷,忘名了,进口轮胎。隆鑫650是我认为国产四个大排中最好看的。质量也不

/// using Excel=Microsoft.Office.Interop.Excel;   

这个问题我可以回答你原因,因为我曾经是某品牌4S店汽车销售,你想如果你把这一切都办了,销售顾问吃啥,他们都有一堆KPI考核。你这样他不卖以下几点是主要原因,参考谈判,可以让你买到物美价廉的车。你相当于买走了一台裸车,这样公司对销售各项考核都不达标了,你的一台车拉低了他整个的考核指标。挣不到钱还要扣钱。车的价格可能你也压到了一定程度,也无差价应该,销售顾问没有任何发挥余地,自己也是挣不到钱,忙前忙后,不划算。既然你要这样,销售没有利润,可是他又要为这台裸车承担满意度等等,弄不好也要扣钱,这一点大部分客户也不理解。卖你一台裸车,他要用很多时间,但是却没有收益,不如他把时间用在开发新客户上。综上,你

/// </remarks>   

/// <returns> </returns>    

public bool DataGridviewShowToExcel(DataGridView dgv, bool isShowExcle)   

{   

    if (dgv.Rows.Count == 0)   

        return false;   

    //建立Excel对象    

    Excel.Application excel = new Excel.Application();   

    excel.Application.Workbooks.Add(true);   

    excel.Visible = isShowExcle;   

    //生成字段名称    

    for (int i = 0; i < dgv.ColumnCount; i++)   

    {   

        excel.Cells[1, i + 1] = dgv.Columns[i].HeaderText;   

    }   

    //填充数据    

    for (int i = 0; i < dgv.RowCount - 1; 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();   

            }   

        }   

    }   

    return true;   

}  

#endregion   

#region DateGridView导出到csv格式的Excel   

/// <summary>   

/// 常用方法,列之间加\t,一行一行输出,此文件其实是csv文件,不过默认可以当成Excel打开。   

/// </summary>   

/// <remarks>   

排球女神张常宁晒出了和母亲的写真照片,两人彷如一对姐妹花,颜值惊人,百年都难得出一个的江南绝代美女一一张常宁!高颜值的母女两人彷佛是一个模子刻出来的,张常宁的妈妈尽显年轻。两人嘟嘴卖荫。在中国女排,魏秋月,惠若琪,张常宁,都是有名的大美女,三人谁最美?三人中,魏秋月最成熟知性,惠若琪美艳逗趣,张常宁仿如邻家女孩,是你更中意那一款类型的美女。

/// using System.IO;   

/// </remarks>   

/// <param name="dgv"></param>   

private void DataGridViewToExcel(DataGridView dgv)   

{   

    SaveFileDialog dlg = new SaveFileDialog();   

    dlg.Filter = "Execl files (*.xls)|*.xls";   

    dlg.FilterIndex = 0;   

    dlg.RestoreDirectory = true;   

    dlg.CreatePrompt = true;   

    dlg.Title = "保存为Excel文件";   

    if (dlg.ShowDialog() == DialogResult.OK)   

    {   

        Stream myStream;   

        myStream = dlg.OpenFile();   

        StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding(-0));   

        string columnTitle = "";   

        try  

        {   

            //写入列标题   

            for (int i = 0; i < dgv.ColumnCount; i++)   

            {   

                if (i > 0)   

                {   

                    columnTitle += "\t";   

                }   

                columnTitle += dgv.Columns[i].HeaderText;   

            }   

            sw.WriteLine(columnTitle);   

            //写入列内容   

            for (int j = 0; j < dgv.Rows.Count; j++)   

            {   

                string columnValue = "";   

                for (int k = 0; k < dgv.Columns.Count; k++)   

                {   

                    if (k > 0)   

                    {   

                        columnValue += "\t";   

                    }   

                    if (dgv.Rows[j].Cells[k].Value == null)   

                        columnValue += "";   

                    else  

                        columnValue += dgv.Rows[j].Cells[k].Value.ToString().Trim();   

                }   

                sw.WriteLine(columnValue);   

            }   

            sw.Close();   

            myStream.Close();   

        }   

        catch (Exception e)   

        {   

            MessageBox.Show(e.ToString());   

        }   

        finally  

        {   

            sw.Close();   

            myStream.Close();   

        }   

    }   

}   

#endregion  

#region DataGridView导出到Excel,有一定的判断性   

/// <summary>    

先获取grid的itemsouces转换Datatable #region 从DataSet到出到Excel /**/ /// /// 执行导出 /// /// 要导出的DataTable /// 要导出到的execl文件路径+文件名ps:如果是c/s程序,那您直接丢一openFileDialog就方便多了 /// 导出到的execl的Sheet

///方法,导出DataGridView中的数据到Excel文件    

/// </summary>    

这里面有写好的,导入导出.你拷过去就可以用了. /// ///使用OLEDB方式读写Excel,不需要Office组件支持 /// class IOIEExcel { /************************************************************************************************************

/// <remarks>   

排球女神张常宁晒出了和母亲的写真照片,两人彷如一对姐妹花,颜值惊人,百年都难得出一个的江南绝代美女一一张常宁!高颜值的母女两人彷佛是一个模子刻出来的,张常宁的妈妈尽显年轻。两人嘟嘴卖荫。在中国女排,魏秋月,惠若琪,张常宁,都是有名的大美女,三人谁最美?三人中,魏秋月最成熟知性,惠若琪美艳逗趣,张常宁仿如邻家女孩,是你更中意那一款类型的美女。

/// add com "Microsoft Excel 11.0 Object Library"   

目前常见的摩托车品牌有本田,雅马哈,铃木川崎。本田经久耐用,适合长期使用,比较保值。雅马哈是艺术家的摩托,稳定,技术新颖。铃木是未来思维,他敢于使用一切最新的技术,无论是否耐用。川崎的特点就是一个字快,就是为速度而生,非常的暴力,不适合初学者。如果想买进口车的话,3万块钱可能够呛,只能买水车了。买水车的风险很大,有可能被没收哦。那么可以考虑一下国产的大排量摩托车。3万左右应该能拿下,比如说春风650,春风650的提速还是挺不错的,质量方面也不错。下面我隆重推荐的还有一款是隆鑫650,他是宝马的发动机,意大利车架,福什么的电喷,忘名了,进口轮胎。隆鑫650是我认为国产四个大排中最好看的。质量也不

/// using Excel=Microsoft.Office.Interop.Excel;   

这个问题我可以回答你原因,因为我曾经是某品牌4S店汽车销售,你想如果你把这一切都办了,销售顾问吃啥,他们都有一堆KPI考核。你这样他不卖以下几点是主要原因,参考谈判,可以让你买到物美价廉的车。你相当于买走了一台裸车,这样公司对销售各项考核都不达标了,你的一台车拉低了他整个的考核指标。挣不到钱还要扣钱。车的价格可能你也压到了一定程度,也无差价应该,销售顾问没有任何发挥余地,自己也是挣不到钱,忙前忙后,不划算。既然你要这样,销售没有利润,可是他又要为这台裸车承担满意度等等,弄不好也要扣钱,这一点大部分客户也不理解。卖你一台裸车,他要用很多时间,但是却没有收益,不如他把时间用在开发新客户上。综上,你

/// using System.Reflection;   

/// </remarks>   

/// <param name= "dgv"> DataGridView </param>    

public static void DataGridViewToExcel(DataGridView dgv)   

{  

 

    #region   验证可操作性   

    //申明保存对话框    

    SaveFileDialog dlg = new SaveFileDialog();   

    //默然文件后缀    

    dlg.DefaultExt = "xls ";   

    //文件后缀列表    

    dlg.Filter = "EXCEL文件(*.XLS)|*.xls ";   

    //默然路径是系统当前路径    

    dlg.InitialDirectory = Directory.GetCurrentDirectory();   

    //打开保存对话框    

    if (dlg.ShowDialog() == DialogResult.Cancel) return;   

    //返回文件路径    

    string fileNameString = dlg.FileName;   

    //验证strFileName是否为空或值无效    

    if (fileNameString.Trim() == " ")   

    { return; }   

    //定义表格内数据的行数和列数    

    int rowscount = dgv.Rows.Count;   

    int colscount = dgv.Columns.Count;   

    //行数必须大于0    

    if (rowscount <= 0)   

    {   

        MessageBox.Show("没有数据可供保存 ", "提示 ", MessageBoxButtons.OK, MessageBoxIcon.Information);   

        return;   

    }   

    //列数必须大于0    

    if (colscount <= 0)   

    {   

        MessageBox.Show("没有数据可供保存 ", "提示 ", MessageBoxButtons.OK, MessageBoxIcon.Information);   

        return;   

    }   

    //行数不可以大于65536    

    if (rowscount > 65536)   

    {   

        MessageBox.Show("数据记录数太多(最多不能超过65536条),不能保存 ", "提示 ", MessageBoxButtons.OK, MessageBoxIcon.Information);   

        return;   

    }   

    //列数不可以大于255    

    if (colscount > 255)   

    {   

        MessageBox.Show("数据记录行数太多,不能保存 ", "提示 ", MessageBoxButtons.OK, MessageBoxIcon.Information);   

        return;   

    }   

    //验证以fileNameString命名的文件是否存在,如果存在删除它    

    FileInfo file = new FileInfo(fileNameString);   

    if (file.Exists)   

    {   

        try  

        {   

            file.Delete();   

        }   

        catch (Exception error)   

        {   

            MessageBox.Show(error.Message, "删除失败 ", MessageBoxButtons.OK, MessageBoxIcon.Warning);   

            return;   

        }   

    }  

    #endregion   

    Excel.Application objExcel = null;   

    Excel.Workbook objWorkbook = null;   

    Excel.Worksheet objsheet = null;   

    try  

    {   

        //申明对象    

        objExcel = new Microsoft.Office.Interop.Excel.Application();   

        objWorkbook = objExcel.Workbooks.Add(Missing.Value);   

        objsheet = (Excel.Worksheet)objWorkbook.ActiveSheet;   

        //设置EXCEL不可见    

        objExcel.Visible = false;   

        //向Excel中写入表格的表头    

        int displayColumnsCount = 1;   

        for (int i = 0; i <= dgv.ColumnCount - 1; i++)   

        {   

            if (dgv.Columns[i].Visible == true)   

            {   

                objExcel.Cells[1, displayColumnsCount] = dgv.Columns[i].HeaderText.Trim();   

                displayColumnsCount++;   

            }   

        }   

        //设置进度条    

        //tempProgressBar.Refresh();    

        //tempProgressBar.Visible   =   true;    

        //tempProgressBar.Minimum=1;    

        //tempProgressBar.Maximum=dgv.RowCount;    

        //tempProgressBar.Step=1;    

        //向Excel中逐行逐列写入表格中的数据    

        for (int row = 0; row <= dgv.RowCount - 1; row++)   

        {   

            //tempProgressBar.PerformStep();    

            displayColumnsCount = 1;   

            for (int col = 0; col < colscount; col++)   

            {   

                if (dgv.Columns[col].Visible == true)   

                {   

                    try  

                    {   

                        objExcel.Cells[row + 2, displayColumnsCount] = dgv.Rows[row].Cells[col].Value.ToString().Trim();   

                        displayColumnsCount++;   

                    }   

                    catch (Exception)   

                    {   

                    }   

                }   

            }   

        }   

        //隐藏进度条    

        //tempProgressBar.Visible   =   false;    

        //保存文件    

        objWorkbook.SaveAs(fileNameString, Missing.Value, Missing.Value, Missing.Value, Missing.Value,   

                Missing.Value, Excel.XlSaveAsAccessMode.xlShared, Missing.Value, Missing.Value, Missing.Value,   

                Missing.Value, Missing.Value);   

    }   

    catch (Exception error)   

    {   

        MessageBox.Show(error.Message, "警告 ", MessageBoxButtons.OK, MessageBoxIcon.Warning);   

        return;   

    }   

    finally  

    {   

        //关闭Excel应用    

        if (objWorkbook != null) objWorkbook.Close(Missing.Value, Missing.Value, Missing.Value);   

        if (objExcel.Workbooks != null) objExcel.Workbooks.Close();   

        if (objExcel != null) objExcel.Quit();   

        objsheet = null;   

        objWorkbook = null;   

        objExcel = null;   

    }   

    MessageBox.Show(fileNameString + "\n\n导出完毕! ", "提示 ", MessageBoxButtons.OK, MessageBoxIcon.Information);   

}  

#endregion  

扩展阅读,根据您访问的内容系统为您准备了以下内容,希望对您有帮助。

C#将DataGridView选中的行导出到Excel表中,求代码

using System;

using System.Data;

using System.Windows.Forms;

using Excel = Microsoft.Office.Interop.Excel;

namespace test1

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent(); 

        }

        private DataTable exporeDataToTable(DataGridView dataGridView)

        {

            //将datagridview中的数据导入到表中

            DataTable tempTable = new DataTable("tempTable");

            //定义一个模板表,专门用来获取列名

            DataTable modelTable = new DataTable("ModelTable");

            //创建列

            for (int column = 0; column < dataGridView1.Columns.Count; column++)

            {

                //可见的列才显示出来

                if (dataGridView1.Columns[column].Visible == true)

                {

                    DataColumn tempColumn = new DataColumn(dataGridView1.Columns[column].HeaderText, typeof(string));

                    tempTable.Columns.Add(tempColumn);

                    DataColumn modelColumn = new DataColumn(dataGridView1.Columns[column].Name, typeof(string));

                    modelTable.Columns.Add(modelColumn);

                }

            }

            //添加datagridview中行的数据到表

            for (int row = 0; row < dataGridView1.Rows.Count; row++)

            {

                if (dataGridView1.Rows[row].Visible == false)

                {

                    continue;

                }

                DataRow tempRow = tempTable.NewRow();

                for (int i = 0; i < tempTable.Columns.Count; i++)

                {

                    tempRow[i] = dataGridView1.Rows[row].Cells[modelTable.Columns[i].ColumnName].Value;

                }

                tempTable.Rows.Add(tempRow);

            }

            return tempTable;

        }

        private void OutputAsExcelFile(DataGridView dataGridView)

        {

            //将datagridView中的数据导出到一张表中

            DataTable tempTable = this.exporeDataToTable(dataGridView);

            //导出信息到Excel表

            Microsoft.Office.Interop.Excel.ApplicationClass myExcel;

            Microsoft.Office.Interop.Excel.Workbooks myWorkBooks;

            Microsoft.Office.Interop.Excel.Workbook myWorkBook;

            Microsoft.Office.Interop.Excel.Worksheet myWorkSheet;

            char myColumns;

            Microsoft.Office.Interop.Excel.Range myRange;

            object[,] myData = new object[500, 35];

            int i, j;//j代表行,i代表列

            myExcel = new Microsoft.Office.Interop.Excel.ApplicationClass();

            //显示EXCEL

            myExcel.Visible = true;

            if (myExcel == null)

            {

                MessageBox.Show("本地Excel程序无法启动!请检查您的Microsoft Office正确安装并能正常使用", "提示");

                return;

            }

            myWorkBooks = myExcel.Workbooks;

            myWorkBook = myWorkBooks.Add(System.Reflection.Missing.Value);

            myWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)myWorkBook.Worksheets[1];

            myColumns = (char)(tempTable.Columns.Count + 64);//设置列

            myRange = myWorkSheet.get_Range("A1", myColumns.ToString() + "5");//设置列宽

            int count = 0;

            //设置列名

            foreach (DataColumn myNewColumn in tempTable.Columns)

            {

                myData[0, count] = myNewColumn.ColumnName;

                count = count + 1;

            }

            //输出datagridview中的数据记录并放在一个二维数组中

            j = 1;

            foreach (DataRow myRow in tempTable.Rows)//循环行

            {

                for (i = 0; i < tempTable.Columns.Count; i++)//循环列

                {

                    myData[j, i] = myRow[i].ToString();

                }

                j++;

            }

            //将二维数组中的数据写到Excel中

            myRange = myRange.get_Resize(tempTable.Rows.Count + 1, tempTable.Columns.Count);//创建列和行

            myRange.Value2 = myData;

            myRange.EntireColumn.AutoFit();

        }

        private void button1_Click(object sender, EventArgs e)

        {

            ///

            /// 临时在dataGridView1添加50行数据,用来测试,没什么实际意义。

            ///

            for (int i = 1; i < 50; i++)

            {

                dataGridView1.Rows.Add("qwq", "qwq", "rwrwr", "sfksfa");//加入要显示的内容,第一列qwq,第二列qwq,第三列rwrwr,第四列sfksfa

            }

            exporeDataToTable(dataGridView1);//将datagridview中的数据导入到表中

            OutputAsExcelFile(dataGridView1);//将datagridView中的数据导出到一张表中

        }

    }

}

 

需要添加引用:

更多追问追答追问你这不是将dataGridView1中一键给全导出了吗?追答如果是选中整行的,这样就好办,你选中的行有标志,在table添加行时做个判断,选中的行才添加进去就行了其他不用变。

比如: foreach (DataGridViewRow row in dataGridView1.SelectedRows),随便你用什么方法,大概就这个意思追问我增加了if (dataGridView1.Rows[j].Cells[0].EditedFormattedValue.ToString() == "True")。结果是导出的行不对,另外每运行一次只能导出一次,之后导出的都是空表。

vb.net中从DataGridView里面把数据导出到excel中

以下是我以前百度找的资料 希望对你有用 你读取DataGridView到DataGrid然后直接调用函数即可

Public Function ExportXLsD(ByVal datagrid As DataGrid) ', ByVal Title As String)

'Dim Mytable As New DataTable

'Mytable = CType(datagrid.DataSource, DataTable)

If mytable Is Nothing Then

MessageBox.Show("没有记录不能导出数据", "PurpleStar", MessageBoxButtons.OK, MessageBoxIcon.Information)

Exit Function

End If

If mytable.Rows.Count > 0 Then

Dim MyFileName As String

Dim FileName As String

With SaveFileDialog1

.AddExtension = True '如果用户忘记添加扩展名,将自动家上

.DefaultExt = "xls" '默认扩展名

.Filter = "Excel文件(*.xls)|*.xls"

.Title = "文件保存到"

If .ShowDialog = DialogResult.OK Then

FileName = .FileName

End If

End With

MyFileName = Microsoft.VisualBasic.Right(FileName, 4)

If MyFileName = "" Then

Exit Function

End If

If MyFileName = ".xls" Or MyFileName = ".XLS" Then

Dim FS As FileStream = New FileStream(FileName, FileMode.Create)

Dim sw As StreamWriter = New StreamWriter(FS, System.Text.Encoding.Default)

sw.WriteLine(vbTab & FileName & vbTab & Date.Now)

Dim i, j As Integer

Dim str As String = ""

For i = 0 To mytable.Columns.Count - 1

str = mytable.Columns(i).Caption

sw.Write(str & vbTab)

Next

sw.Write(vbCrLf)

For j = 0 To mytable.Rows.Count - 1

For i = 0 To mytable.Columns.Count - 1

Dim strColName, strRow As String

strRow = IIf(mytable.Rows(j).Item(i) Is DBNull.Value, "", mytable.Rows(j).Item(i))

sw.Write(strRow & vbTab)

Next

sw.Write(vbLf)

Next

sw.Close()

FS.Close()

MessageBox.Show("数据导出成功!", "PurpleStar", MessageBoxButtons.OK, MessageBoxIcon.Information)

Else

Exit Function

End If

Else

MessageBox.Show("没有记录不能导出数据", "PurpleStar", MessageBoxButtons.OK, MessageBoxIcon.Information)

End If

End Function

Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click

Dim saveExcel As SaveFileDialog

saveExcel = New SaveFileDialog

saveExcel.Filter = "Excel文件(.xls)|*.xls"

Dim filename As String

If saveExcel.ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub

filename = saveExcel.FileName

Dim excel As Excel.Application

excel = New Excel.Application

excel.DisplayAlerts = False

excel.Workbooks.Add(True)

excel.Visible = False

Dim i As Integer

For i = 0 To DataGridView1.Columns.Count - 1

excel.Cells(1, i + 1) = DataGridView1.Columns(i).HeaderText

Next

'设置标题

Dim j As Integer

For i = 0 To DataGridView1.Rows.Count - 1 '填充数据

For j = 0 To DataGridView1.Columns.Count - 1

excel.Cells(i + 2, j + 1) = DataGridView1(j, i).Value

Next

Next

excel.Workbooks(1).SaveCopyAs(filename) '保存

Me.Close()

End Sub

参考资料:以前的收藏 具体不记得哪里了

vb.net dataGridView导出EXCEL

我有现成的,你直接调用哈,没有时间给你看代码

Public Function daochu(ByVal x As DataGridView) As Boolean '导出到Excel函数

Try

If x.Rows.Count <= 0 Then '判断记录数,如果没有记录就退出

MessageBox.Show("没有记录可以导出", "没有可以导出的项目", MessageBoxButtons.OK, MessageBoxIcon.Information)

Return False

Else '如果有记录就导出到Excel

Dim xx As Object : Dim yy As Object

xx = CreateObject("Excel.Application") '创建Excel对象

yy = xx.workbooks.add()

Dim i As Integer, u As Integer = 0, v As Integer = 0 '定义循环变量,行列变量

For i = 1 To x.Columns.Count '把表头写入Excel

yy.worksheets(1).cells(1, i) = x.Columns(i - 1).HeaderCell.Value

Next

Dim str(x.Rows.Count - 1, x.Columns.Count - 1) '定义一个二维数组

For u = 1 To x.Rows.Count '行循环

For v = 1 To x.Columns.Count '列循环

If x.Item(v - 1, u - 1).Value.GetType.ToString <> "System.Guid" Then

str(u - 1, v - 1) = x.Item(v - 1, u - 1).Value

Else

str(u - 1, v - 1) = x.Item(v - 1, u - 1).Value.ToString

End If

Next

Next

yy.worksheets(1).range("A2").Resize(x.Rows.Count, x.Columns.Count).Value = str '把数组一起写入Excel

yy.worksheets(1).Cells.EntireColumn.AutoFit() '自动调整Excel列

' yy.worksheets(1).name = x.TopLeftHeaderCell.Value.ToString '表标题写入作为Excel工作表名称

xx.visible = True '设置Excel可见

yy = Nothing '销毁组建释放资源

xx = Nothing '销毁组建释放资源

End If

Return True

Catch ex As Exception '错误处理

MessageBox.Show(Err.Description.ToString, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error) '出错提示

Return False

End Try

End Function来自:求助得到的回答

VB.NET怎么将DataGridview里的内容导出到EXCEL去

不好意思 现在才看到;Private Sub 导出EXCEL_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

Dim xlApp, xlBook, xlSheet As Object

xlapp = CreateObject("Excel.Application")

xlbook = xlapp.Workbooks.Add

xlsheet = xlbook.Worksheets(1)

'Dim xlapp As New Excel.Application

'Dim xlbook As Excel.Workbook

'Dim xlsheet As Excel.Worksheet

Dim rowindex, colindex As Integer rowindex = 1 '行

colindex = 0 '列

'xlbook = xlapp.Workbooks.Open("c:\EXCEL.xls") '打开EXCEL文件

xlsheet = xlapp.Worksheets("sheet1") '打开sheet1那页 Dim a As New DataSet

Dim table As New System.Data.DataTable table = DataSet11.Tables("INVMATLISTA") '填充表 Dim row As DataRow '定义row为表格的行

Dim col As DataColumn '定义col为表格的列 '把表格的每一列写到EXCEL去

For Each col In table.Columns

colindex = colindex + 1

xlapp.Cells(1, colindex) = col.ColumnName Next

'把表格的每一行写到EXCEL去

For Each row In table.Rows

rowindex = rowindex + 1

colindex = 0

For Each col In table.Columns

colindex = colindex + 1

xlapp.Cells(rowindex, colindex) = row(col.ColumnName)

Next

Next

xlapp.Visible = True

End Sub 前提要先引用一个Microsoft.Office.Interop.Excel.dll然后在最上面先输入Imports Microsoft.Office.Interop; 就可以了

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.打开后,效果如下:


  • 本文相关:
  • c# datagridview添加新行的2个方法
  • winform中datagridview添加,删除,修改操作具体方法
  • datagridview中绑定datatable数据及相关操作实现代码
  • c# datagridview常用操作汇总
  • datagridview自动调整行高和行宽
  • c#利用excel直接读取数据到datagridview
  • c#读取xml文件到datagridview实例
  • c#中datagridview动态添加行及添加列的方法
  • c# datagridview绑定list方法代码
  • datagridview使用技巧(9)datagridview的右键菜单
  • asp.net core依赖注入系列教程之控制反转(ioc)
  • asp.net使用gridview获取当前行的索引值
  • asp.net中repeater嵌套实现代码(附源码)
  • asp.net 大文件上传控件
  • 三步将asp.net页面输出到excel里
  • 浅谈asp.net forms身份验证详解
  • asp.net下将图片保存到xml文件的方法
  • 如何实现listview高效分页代码
  • 通过radiobutton对datalist控件进行单选实例说明
  • asp.net实现页面跳转的方法
  • C#将DataGridView选中的行导出到Excel表中,求代码
  • vb.net中从DataGridView里面把数据导出到excel中
  • vb.net dataGridView导出EXCEL
  • VB.NET怎么将DataGridview里的内容导出到EXCEL去
  • c#如何把datagridview导出到excel
  • 在C#中,如何把DataGridview中的数据导出到一个Exc...
  • 通过按钮点击 使datagridview导出到excel
  • c#中将datagridview中数据导出到excel中,点击保存...
  • C# windows 应用程序将datagridview 中的数据导出...
  • C#winform 两个datagridview中的数据一键导出到同...
  • 免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved