DataGridView导出数据到Excel

来源:互联网 发布:吉他 知乎 编辑:程序博客网 时间:2024/05/05 17:08

 public static void ExcelSave (DataGridView dgv)        {         if(dgv.RowCount<=0)        {            MessageBox.Show("缺少可以导出的数据!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);            return;        }            string saveFileName=string.Empty;            SaveFileDialog sfd=new SaveFileDialog();            sfd.DefaultExt="xlsx";            sfd.Filter="Excel文件|*.xlsx";            sfd.FileName="sheet1";            sfd.ShowDialog();            saveFileName=sfd.FileName;            if(saveFileName.IndexOf(".")<0)            {                return;            }            Microsoft.Office.Interop.Excel.Application myExcelApp=new Microsoft.Office.Interop.Excel.Application();            if(myExcelApp==null)            {                MessageBox.Show("无法创建Excel,可能您未安装Excel","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);                return;            }            Microsoft.Office.Interop.Excel.Workbooks workbooks=myExcelApp.Workbooks;            Microsoft.Office.Interop.Excel.Workbook workbook=workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);            Microsoft.Office.Interop.Excel.Sheets sheets=workbook.Worksheets;            Microsoft.Office.Interop.Excel.Worksheet worksheet=(Microsoft.Office.Interop.Excel.Worksheet)sheets.get_Item(1);            Microsoft.Office.Interop.Excel.Range range;            object oMis=System.Reflection.Missing.Value;            //显示为文本格式            range=worksheet.get_Range(worksheet.Cells[1,1],worksheet.Cells[dgv.RowCount+1,dgv.ColumnCount]);            range.NumberFormatLocal="@";            //读入数据            for (int i=0; i<dgv.ColumnCount;i++ )            {                worksheet.Cells [1, i+1]=dgv.Columns [i].HeaderText.ToString().Trim();            }            for (int r=0; r<dgv.RowCount;r++ )            {                for (int i=0; i<dgv.ColumnCount;i++ )                {                    worksheet.Cells [r+2, i+1]=dgv.Rows [r].Cells [i].Value.ToString().Trim();                }            }            range=worksheet.get_Range( worksheet.Cells [1, 1], worksheet.Cells [dgv.RowCount+1, dgv.ColumnCount] );            range.Columns.AutoFit();            range.RowHeight=18;            range.HorizontalAlignment=Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignLeft;            //保存            if (saveFileName!=string.Empty)            {                try                {                    workbook.Saved=true;                    workbook.SaveCopyAs( saveFileName );                }                catch (Exception ex)                {                    MessageBox.Show( "导出文件时出错,文件可能正被打开!\n"+ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information );                }            }            else            {                MessageBox.Show( "文件名不能为空", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information );            }            myExcelApp.Visible=false;            myExcelApp.Quit();            GC.Collect();//垃圾回收        }    }

0 0
原创粉丝点击