C#机房重构——导出Excel表格

来源:互联网 发布:java 字符串转日期 编辑:程序博客网 时间:2024/05/16 13:03

      导出Excel表格,当时就是在网上找的,这次依然还是,不过稍微能看懂点是什么意思了,下面把代码分享给小伙伴们。

      


[csharp] view plain copy
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Text;  
  5. using System.Threading.Tasks;  
  6. using Microsoft.Office.Interop.Excel;  
  7. using Microsoft.Office.Core;  
  8. using System.Windows.Forms;  
  9. using System.Data.SqlClient;  
  10. using System.Data.OleDb;  
  11. using System.Threading;  
  12.   
  13. namespace UI  
  14. {  
  15.     public class Excel  
  16.     {  
  17.         public void RExcel(string name,DataGridView dgv)  
  18.         {  
  19.             //总可见列数,总可见行数  
  20.             int colCount = dgv.Columns.GetColumnCount(DataGridViewElementStates.Visible);  
  21.             int rowCount = dgv.Rows.GetRowCount(DataGridViewElementStates.Visible);  
  22.             //dataGridView 没有数据提示  
  23.             if (dgv.Rows.Count == 0 || rowCount == 0)  
  24.             {  
  25.                 MessageBox.Show("表中没有数据""提示");  
  26.             }  
  27.             else  
  28.             {  
  29.                 //选择创建文件的路径  
  30.                 SaveFileDialog save = new SaveFileDialog();  
  31.                 save.Filter = "excel files(*.xlsx)|*.xlsx";  
  32.                 save.Title = "请选择要导出数据的位置";  
  33.                 save.FileName = name + DateTime.Now.ToLongDateString();  
  34.                 if (save.ShowDialog() == DialogResult.OK)  
  35.                 {  
  36.                     string fileName = save.FileName;  
  37.                     //MessageBox.Show(save.FileName);  
  38.                     // 创建Excel对象  
  39.                     Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();  
  40.                     if (excel == null)  
  41.                     {  
  42.                         MessageBox.Show("Excel无法启动""提示");  
  43.                         return;  
  44.                     }  
  45.                     //创建Excel工作薄  
  46.                     Microsoft.Office.Interop.Excel.Workbook excelBook = excel.Workbooks.Add(true);  
  47.                     Microsoft.Office.Interop.Excel.Worksheet excelSheet = (Microsoft.Office.Interop.Excel.Worksheet)excelBook.Worksheets[1];  
  48.                     //excel.Application.Workbooks.Add(true);  
  49.                     //生成字段名称  
  50.                     int k = 0;  
  51.                     for (int i = 0; i < dgv.ColumnCount; i++)  
  52.                     {  
  53.                         if (dgv.Columns[i].Visible)  //不导出隐藏的列  
  54.                         {  
  55.                             excel.Cells[1, k + 1] = dgv.Columns[i].HeaderText;  
  56.                             k++;  
  57.                         }  
  58.                     }  
  59.                     //填充数据  
  60.                     for (int i = 0; i < dgv.RowCount; i++)  
  61.                     {  
  62.                         k = 0;  
  63.                         for (int j = 0; j < dgv.ColumnCount; j++)  
  64.                         {  
  65.                             if (dgv.Columns[j].Visible)  //不导出隐藏的列  
  66.                             {  
  67.                                 if (dgv[j, i].ValueType == typeof(string))  
  68.                                 {  
  69.                                     excel.Cells[i + 2, k + 1] = "" + dgv[j, i].Value.ToString();  
  70.                                 }  
  71.                                 else  
  72.                                 {  
  73.                                     excel.Cells[i + 2, k + 1] = dgv[j, i].Value.ToString();  
  74.                                 }  
  75.                             }  
  76.                             k++;  
  77.                         }  
  78.                     }  
  79.                     try  
  80.                     {  
  81.                         excelBook.Saved = true;  
  82.                         excelBook.SaveCopyAs(fileName);  
  83.                         MessageBox.Show("导出成功!");  
  84.                     }  
  85.                     catch  
  86.                     {  
  87.                         MessageBox.Show("导出失败,文件可能正在使用中""提示");  
  88.                     }  
  89.   
  90.                 }  
  91.             }  
  92.         }  
  93.     }  
  94. }  
        上面是在我们的方法类中,在界面中,如果我们需要用这个方法:

[csharp] view plain copy
  1. private void btnExcel_Click(object sender, EventArgs e)  
  2. {  
  3.     string name = "";  
  4.     Excel ex = new Excel();  
  5.     ex.RExcel(name,dataGridView1);  
  6. }  


原创粉丝点击