C#_调用封装的一个类实现导出Excel表格的功能

互联网 18-8-3

前言

在大多数窗体中都有导出Excel表格的功能,如果封装封装一个类,使用的时候直接调用这个类不是更方便?,这样还减少了代码的重复性,何乐而不为?

操作

首先添加引用,在com中选中microsoft office 16.0 object library,和microsoft Excel 16.0 object library。

添加命名空间:

using Microsoft.Office.Interop.Excel;//导出Excel using Microsoft.Office.Core; using System.Data.OleDb; using System.Windows.Forms;

新建一个类并命名为outputExcel,代码如下:

public  class outputExcel     {         //导出excel         public void RExcel(string name, DataGridView dgv)         {             //总可见行列数             int rowCount = dgv.Rows.GetRowCount(DataGridViewElementStates.Visible);             int colCount = dgv.Columns.GetColumnCount(DataGridViewElementStates.Visible);              //如果没有数据             if (dgv.Rows.Count == 0 || rowCount == 0)             {                 MessageBox.Show("表中没有数据", "提示");             }             else             {                 //创建文件的路径                 SaveFileDialog save = new SaveFileDialog();                 save.Filter = "excel files(*.xlsx)|*.xlsx";                 save.Title = "请选择要导出数据的位置";                 save.FileName = name + DateTime.Now.ToLongDateString();                  if (save.ShowDialog() == DialogResult.OK)                 {                     string fileName = save.FileName;                      //创建excel对象                     Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();                     if (excel == null)                     {                         MessageBox.Show("Excel无法启动", "提示");                         return;                     }                      //创建工作薄                     Microsoft.Office.Interop.Excel.Workbook excelBook = excel.Workbooks.Add(true);                     Microsoft.Office.Interop.Excel.Worksheet excelSheet = (Microsoft.Office.Interop.Excel.Worksheet)excelBook.Worksheets[1];                      //生成字段名                     int k = 0;                     for (int i = 0; i < dgv.ColumnCount; i++)                     {                         if (dgv.Columns[i].Visible)//不导出隐藏列                         {                             excel.Cells[1, k + 1] = dgv.Columns[i].HeaderText;                             k++;                         }                     }                      //填充数据                     for (int i = 0; i < dgv.RowCount; i++)                     {                         k = 0;                         for (int j = 0; j < dgv.ColumnCount; j++)                         {                             if (dgv.Columns[j].Visible)//不导出隐藏的列                             {                                 if (dgv[j, i].ValueType == typeof(string))                                 {                                     excel.Cells[i + 2, k + 1] = "" + dgv[j, i].Value.ToString();                                 }                                 else                                 {                                     excel.Cells[i + 2, k + 1] = dgv[j, i].Value.ToString();                                 }                             }                             k++;                         }                     }                      try                     {                         excelBook.Saved = true;                         excelBook.SaveCopyAs(fileName);                         MessageBox.Show("导出成功!");                     }                     catch                     {                         MessageBox.Show("导出文件失败,文件可能正在使用中", "提示");                     }                 }             }         }       }

当窗体需要使用此功能时,需要写上以下代码即可:

private void btnoutExcel_Click(object sender, EventArgs e)         {             outputExcel form1 = new outputExcel();             form1.RExcel("", dataGridView1);          }

相关文章:

【c#教程】C# 数据类型

mysql Connector C/C++ 多线程封装

以上就是C#_调用封装的一个类实现导出Excel表格的功能的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: C# Excel表格
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:如何看待C#中的out和ref?探讨它们之间的区别

相关资讯