WinForm_datagridview-to-excel_excel.dll处理方式

来源:互联网 发布:电影男人四十知乎 编辑:程序博客网 时间:2024/06/05 17:20

2017/3/22

VS中加入excel.dll的引用,cs代码中using Excel = Microsoft.Office.Interop.Excel;
保存文件时文件格式为xlsx,而不是xls,后者保存之后打开会提示文件格式错误,影响客户使用。


代码部分:

{                   string path = "";            SaveFileDialog saveDialog = new SaveFileDialog();            saveDialog.DefaultExt = "xlsx";            saveDialog.Filter = "Excel文件|*.xlsx";            saveDialog.ShowDialog();            path = saveDialog.FileName;            if (path.IndexOf(":") < 0) return; //判断是否点击取消            try            {                Excel.Application xlApp = new Excel.Application();                if (xlApp == null)                {                    MessageBox.Show("无法创建Excel对象,可能您的机子未安装Excel");                    return;                }                Excel.Workbooks workbooks = xlApp.Workbooks;                Excel.Workbook workbook = workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);                Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Worksheets[1];//取得sheet1                int colIndex = 0;                //写入标题                for (int i = 0; i < this.dataGridView1.ColumnCount; i++)                {                    if (dataGridView1.Columns[i].Visible)//用作于不导出隐藏列                    {                        colIndex++;                        worksheet.Cells[1, colIndex] = dataGridView1.Columns[i].HeaderText;                        //worksheet.Cells[1, i] = myDGV.Columns[i].HeaderText;                    }                }                //写入数值                for (int r = 0; r < dataGridView1.Rows.Count ; r++)                {                    colIndex = 0;                    for (int i = 0; i < dataGridView1.ColumnCount; i++)                    {                        if (dataGridView1.Columns[i].Visible)                        {                            colIndex++;                            worksheet.Cells[r + 2, colIndex] = dataGridView1.Rows[r].Cells[i].Value;                            worksheet.Cells[colIndex,1 ].NumberFormat = "@";//[]中的值:第几行第1列,NumberFormat="@"即格式化为文本型:解决001前0不显示问题                        }                    }                    System.Windows.Forms.Application.DoEvents();                }                                worksheet.Columns.EntireColumn.AutoFit();//列宽自适应                if (path != "")                {                    try                    {                        workbook.Saved = true;                        workbook.SaveCopyAs(path);                        //fileSaved = true;                    }                    catch (Exception ex)                    {                        //fileSaved = false;                        MessageBox.Show("导出文件时出错,文件可能正被打开!\n\r" + ex.Message);                    }                }                xlApp.Quit();                GC.Collect();//强行销毁                // if (fileSaved && System.IO.File.Exists(saveFileName)) System.Diagnostics.Process.Start(saveFileName); //打开EXCEL                  MessageBox.Show(path + ",导出成功", "系统提示", MessageBoxButtons.OK);            }            catch (Exception ex)            {                MessageBox.Show(ex.Message);            }         }


                                             
0 0
原创粉丝点击