DataGridView按列顺序导出Excel

来源:互联网 发布:win2008 r2 数据库 编辑:程序博客网 时间:2024/05/22 03:26

先添加引用程序集 Microsoft.Office.Interop.Excel

声明 using Excel = Microsoft.Office.Interop.Excel;  

以及贴出方法:


//DataGridView数据导出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            string[] array = new string[myDGV.Columns.Count];            //获取Visble =true 的列             foreach (DataGridViewColumn column in myDGV.Columns)            {                if (column.Visible == true)                {                    array[column.DisplayIndex] = column.HeaderText + '|' + column.Name; ;                }            }            int RowsCount = myDGV.Rows.Count;            int ColumnsCount = array.Length;            int mm = 1;            for (int i = 0; i < ColumnsCount; i++)            {                string[] str =new string[2];                string ColumnName;                try                {                    str = array.GetValue(i).ToString().Split('|');                    ColumnName = str[0];                }                catch                {                    continue;                }                //导出列名                 worksheet.Cells[1, mm] = ColumnName;                //导出列内容                 for (int m = 0; m < RowsCount; m++)                {                    try                    {                        worksheet.Cells[m + 2, mm] = myDGV.Rows[m].Cells[str[1]].FormattedValue.ToString();                    }                    catch                    { }                }                //执行完一列 mm++                 mm++;            }            worksheet.Columns.EntireColumn.AutoFit();            if (saveFileName != "")            {                try                {                    workbook.Saved = true;                    workbook.SaveCopyAs(saveFileName);                }                catch (Exception ex)                {                    MessageBox.Show("导出文件时出错,文件可能正被打开!\n" + ex.Message);                }            }            xlApp.Quit();            GC.Collect();//强行销毁             MessageBox.Show(fileName + "的表格资料保存成功", "提示", MessageBoxButtons.OK);        }



原创粉丝点击