• 技术文章 >后端开发 >C#.Net教程

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

    php是最好的语言php是最好的语言2018-08-03 11:29:52原创1464

    前言

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

    操作

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

    1.jpg

    添加命名空间:

    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表格的功能的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:C# Excel表格
    上一篇:如何看待C#中的out和ref?探讨它们之间的区别 下一篇:C#使用Newtonsoft的Json.NET进行对象的序列化与反序列化
    Web大前端开发直播班

    相关文章推荐

    • 一文聊聊C语言中的字符串操作(大小写转换、比较、排序等)• 分享一道逻辑面试题,看看你能答对吗!• SUNWEN教程之----C#进阶(五)• asp.net 图片验证码的HtmlHelper• SUNWEN教程之----C#进阶(九)

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网