C# WinForm下DataGridView导出Excel的实现(简单无错版,带另存对话框)

it2024-07-10  70

首先请先引用:Microsoft.Office.Interop.Excel 11.0.0.0 .  

#region 导出excel

        private void ExportExcel(string fileName, DataGridView myDGV)        {            string saveFileName = "";            //bool fileSaved = false;            SaveFileDialog saveDialog = new SaveFileDialog();            saveDialog.DefaultExt = "xls";            saveDialog.Filter = "Excel文件|*.xls";            saveDialog.FileName = fileName;            saveDialog.ShowDialog();            saveFileName = saveDialog.FileName;            if (saveFileName.IndexOf(":") < 0) return; //被点了取消             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 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";            //}

            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);        }

        #endregion

转载于:https://www.cnblogs.com/yuteng/articles/1751527.html

相关资源:C#Winform将DataGridView数据导出到Excel的两种方法
最新回复(0)