C# 中利用DataGridView将数据库中的信息导出为Excel

using System ; using System .Collections .Generic ;
using System .Windows .Forms ;
using System .Text ;
using System .Diagnostics ;
using System .IO ;
using Microsoft .Office .Interop .Excel ;

namespace SalesListDownload
{
    public class Export
    {
        public static void ExportExcel(string fileName, DataGridView myDGV)
        {

            if (myDGV .Rows .Count  >  0 )
            {
                Microsoft .Office .Interop .Excel .Application  xlApp = new Microsoft .Office .Interop .Excel .Application () ;
                if (xlApp == null)
                {
                    MessageBox .Show ( "无法创建Excel对象,可能您的机子未安装Excel" ) ;
                    return ;
                }

                Microsoft .Office .Interop .Excel .Workbooks  workbooks = xlApp .Workbooks ;
                Microsoft .Office .Interop .Excel .Workbook  workbook = workbooks .Add (Microsoft .Office .Interop .Excel .XlWBATemplate .xlWBATWorksheet ) ;
                Microsoft .Office .Interop .Excel .Worksheet  worksheet = (Microsoft .Office .Interop .Excel .Worksheet )workbook .Worksheets [ 1 ] ;//取得sheet1

                //写入标题
                for (int i =  0 ; i < myDGV.ColumnCount; i++)
                {
                    worksheet .Cells [ 1 , i +  1 ] = myDGV .Columns [i] .HeaderText ;
                }
                for (int i =  1 ; i <= myDGV.ColumnCount; ++i)
                {
                    Microsoft .Office .Interop .Excel .Range  setrange = worksheet .get _Range(worksheet .Cells [ 1 , i], worksheet .Cells [myDGV .RowCount , i]) ;
                    setrange .NumberFormatLocal  =  "@" ;//设置数字文本格式
                }
                //写入数值
                for (int r =  0 ; r < myDGV.Rows.Count; r++)
                {
                    for (int i =  0 ; i < myDGV.ColumnCount; i++)
                    {
                        worksheet .Cells [r +  2 , i +  1 ] = myDGV .Rows [r] .Cells [i] .Value ;
                    }
                    System .Windows .Forms .Application .DoEvents () ;
                }
                worksheet .Columns .EntireColumn .AutoFit () ;//列宽自适应
                //if (Microsoft .Office .Interop .cmbxType .Text  !=  "Notification" )
                //{
                //    Excel .Range  rg = worksheet .get _Range(worksheet .Cells [ 2 2 ], worksheet .Cells [ds .Tables [ 0 ] .Rows .Count  +  1 2 ]) ;
                //    rg .NumberFormat  =  "00000000" ;
                //}

                string saveFileName = fileName ;
                if (saveFileName !=  "" )
                {
                    try
                    {
                        workbook .Saved  = true ;
                        workbook .SaveCopyAs (saveFileName) ;
                        //fileSaved = true ;
                    }
                    catch (Exception ex)
                    {
                        //fileSaved = false ;
                        MessageBox .Show ( "导出文件时出错,文件可能正被打开!\n"  + ex .Message ) ;
                    }

                }
                //else
                //{
                //    fileSaved = false ;
                //}
                xlApp .Quit () ;
                GC .Collect () ;//强行销毁 
                // if (fileSaved && System .IO .File .Exists (saveFileName)) System .Diagnostics .Process .Start (saveFileName) ; //打开EXCEL
                MessageBox .Show (fileName +  "的简明资料保存成功" "提示" , MessageBoxButtons .OK ) ;
            }
            else
            {
                MessageBox .Show ( "报表为空,无表格需要导出" "提示" , MessageBoxButtons .OK ) ;
            }
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值