三种从excel中提取数据的方法之第一种2020-11-21

第一种,安装了office套件,不想打开excel从里面提取数据
第二种,安装了office套件,然后打开excel再提取数据
第三种,没安装office套件,使用第三方插件提取数据

第一种:
安装过office套件,需要在项目引用中添加Microsoft Excel 16.0 Object Library 这个类库(版本不同可能中间的数字也不同,我这里是office2016版本)


image.png

添加完之后需要using一下引用的类库

using Microsoft.Office.Interop.Excel;

完成之后就可以开始秀操作了
下面是操作代码:

//定义一个路径,然后根据路径打开excel文档
                string 路径;
                Microsoft.Office.Interop.Excel.Application app; //定义一个应用程序
                Workbooks wbs;//excel中的 workbooks
                Workbook wb = null; //workbook
                Worksheet ws; //worksheet
                app = new Microsoft.Office.Interop.Excel.Application();//创建一个新的APP对象
                wbs = app.Workbooks;//从新对象中取的workbooks
                wbs.Application.Visible = false;//不显示APP操作
                app.ScreenUpdating = false;//禁止刷新屏幕
                app.DisplayAlerts = false;//是否弹出提示框
                try
                {
                    wb = wbs.Open(路径);//打开excel表
                    ws = wb.ActiveSheet;//获取活动的sheet,一般为第一个sheet
                    //每个公司表格样式不同,下面的获取位置也不同,请自行修改,ZW表格的内容是从第9行开始,所以下面 cout=9
                    //提取数据,直接从9~99999行中查找编码和数量不为空的数据,为空就停止
                    for (int cout = 9; cout <= 99999; cout++)
                    {//下面是从[9,3]9行3列中获取值,后面9行8列中获取值,分别代表的是编码和数量
                        if (ws.Cells[cout, 3].Value2 != null && ws.Cells[cout, 8].Value2 != null)
                        {
                            //此处就可以将你获取到的数据,进行处理了
                            //...............
                        }
                        else
                        {
                            break;
                        }
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "提取错误"); 
                }
                try
                {//释放资源,必须要处理的一步,如果不处理,数据比较多的话会造成短时间内内存被异常占用,直到系统自动回收为止
                    if (wb != null)
                    {
                        wb.Close(Type.Missing, Type.Missing, Type.Missing);
                    }
                    else
                    {
                        wb = null;
                    }
                    if (wbs != null)
                    {
                        wbs.Close();
                    }
                    else
                    {
                        wbs = null;
                    }
                    if (app != null)
                    {
                        app.Quit();
                    }
                    else
                    {
                        app = null;
                    }
                    //GC.Collect();//系统自动回收资源,没有人为释放彻底,弃用
                    //关闭excel进程,如果不关闭,也会造成资源被占用,excel进程一堆的情况,此方法下一次更新再写进去
                    //CloseProc("EXCEL");
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "释放资源错误");
                }

第一种方法就完成了,下一篇第二种打开excel进行操作,未完待续....

你可能感兴趣的:(三种从excel中提取数据的方法之第一种2020-11-21)