/// <summary>
        /// //通过读入2007Excel表格导入
        /// </summary>
        /// <param name="myDGV"></param>
        public void importFromExcel2007(DataGridView myDGV)
        {
            DatasetVector DtV;//数据集
            Recordset RS = null;
            //通过读入Excel表格导入
            OpenFileDialog openFileDialog = new OpenFileDialog();
            openFileDialog.Filter = "2007Excel文件(*.xls)|*.xls|2007Excel文件(*.xlsx)|*.xlsx|All files (*.*)|*.*";
            openFileDialog.FilterIndex = 0;
            openFileDialog.RestoreDirectory = true;
            openFileDialog.Title = "请选择要导入的Excel文件";
            IWorkbook workbook = null;
            if (dataGridView1.RowCount>0|| dataGridView1.Columns.Count>1)
            {
                if (!DelectAll())
                {
                    return;
                }
            }           
            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                string fileName = @"" + openFileDialog.FileName + "";
                try
                {
                    FileStream fileStream = new FileStream("" + fileName + "", FileMode.Open, FileAccess.Read);
                    //2007版本
                    if (fileName.IndexOf(".xlsx") > 0)
                    {
                        workbook = new XSSFWorkbook(fileStream);//xlsx数据读入workbook
                    }//2003版本
                    else if (fileName.IndexOf(".xls") > 0)
                    {
                        workbook = new HSSFWorkbook(fileStream);//xls数据读入workbook
                    }
                    else
                    {
                        MessageBox.Show("格式有误,无法导入");
                    }
                    ISheet sheet = workbook.GetSheetAt(0);
                    IRow row;
                    string[] list = new string[sheet.LastRowNum];//行数
                    celllist = new string[sheet.GetRow(0).LastCellNum];//列数
                    if (BDDataOperate.GetDtV("BD", "BDInformation", out DtV))
                    {
                        RS = DtV.GetRecordset(false, CursorType.Dynamic);
                        if (RS != null)
                        {
                            myDGV.Rows.Clear();//清空列表                            
                            RS.MoveFirst();//移动到当前第一个位置
                            FieldInfos fieldInfos = DtV.FieldInfos;
                            int cellCount = sheet.GetRow(0).LastCellNum;//字段行列数
                            if (sheet.GetRow(0).GetCell(0).ToString() != "装备编号")
                            {
                                MessageBox.Show("首列字段名不合法");
                                return;
                            }
                            //循环读取字段名
                            for (int f = 1; f < cellCount; f++)
                            {
                                DtV.IsReadOnly = false;
                                //实例化一个字段信息对象,对其进行设置
                                FieldInfo fieldInfo = new FieldInfo();
                                fieldInfo.Name = sheet.GetRow(0).GetCell(f).ToString();//字段名字
                                fieldInfo.Caption = sheet.GetRow(0).GetCell(f).ToString();//字段别名
                                fieldInfo.Type = FieldType.Text;//字段类型
                                fieldInfo.IsRequired = false;
                                fieldInfos.Add(fieldInfo);// 将字段添加到数据集中                                  
                                celllist[f] = fieldInfo.Name;
                                fieldInfo.Dispose();
                                RS.Update();//保存数据
                            }
                            RS = DtV.GetRecordset(false, CursorType.Dynamic);//重新开始编辑
                            //循环读取Excel里面的数据并且赋值到数据库中
                            for (int i = 1; i <= sheet.LastRowNum; i++)
                            {
                                if (sheet.GetRow(i).GetCell(0) == null)
                                {
                                    MessageBox.Show("格式有误,无法导入");
                                    return;
                                }
                                FieldValustion = new Dictionary<String, object>();
                                Regex rex = new Regex(@"^([0-9]+[.]?[0-9]*)$");//创建正则表达式
                                if (rex.IsMatch(sheet.GetRow(i).GetCell(0).ToString()))//判断是否是纯数字
                                {
                                    FieldValustion.Add("ZBID", Convert.ToInt32(sheet.GetRow(i).GetCell(0).ToString()));//ZBID单独赋值
                                    for (int j = 1; j < cellCount; j++)
                                    {
                                        FieldValustion.Add(celllist[j].ToString(), sheet.GetRow(i).GetCell(j).ToString());
                                    }
                                    RS.AddNew(null, FieldValustion);
                                    RS.Update();
                                }
                                else
                                {
                                    MessageBox.Show("第" + i + "行不符合规则,无法导入");
                                    return;
                                }
                            }
                            MessageBox.Show("导入成功");
                            RS.Close();
                            RS.Dispose();
                            Console.ReadLine();
                            fileStream.Close();
                        }
                    }
                }
                catch (Exception ex)
                {
                }
            }
            else
            {
                return;
            }
        }

C#通过Nopi操作EXCEL表相关推荐

  1. JAVA使用POI操作Excel表,XSSF(xlsx)和HSSF(xls)

    JAVA使用POI操作Excel表,XSSF(xlsx)和HSSF(xls) *** POI的结构: ---*HSSF - 提供读写Microsoft Excel格式档案的功能. ---*XSSF - ...

  2. openpyxl 操作 Excel表的格基本用法

    在本教程中,将Python3和openpyxl库一起使用来操作 Excel 表格. 本文将介绍如下操作: 如何在内存中创建工作簿 如何从工作簿中检索.创建.复制.移动和删除工作表 如何从文件创建工作簿 ...

  3. java excel生成_java操作excel表,包括创建、读取、以及修改【via 度娘】

    作者的网站上对它的特征有如下描述: ● 支持Excel 95-2000的所有版本 ● 生成Excel 2000标准格式 ● 支持字体.数字.日期操作 ● 能够修饰单元格属性 ● 支持图像和图表 应该说 ...

  4. java操作excel表

    文章分类:Java编程 http://developers.sun.com.cn/blog/functionalca/entry/java读写excel简介 JAVA EXCEL API简介 Java ...

  5. C#操作Excel表

    本文主要介绍一下c#来操作excel表格,主要介绍我使用的,我是使用第三方提供的函数库(NPOI)来进行excel的操作,而NPOI库函数在其官网下,我这里就不拿出来了. 1:NPOI库函数 NPOI ...

  6. NOPI操作Excel

    //自定义颜色 ,将颜色转换成NOPI的颜色 private static short GetXLColour(HSSFWorkbook workbook, System.Drawing.Color ...

  7. Python之如何使用pandas操作Excel表

    目录 1.前言 2.读取Excel 3.对Excel进行操作 3.1.获取行号.列名 3.2.获取单元格的值,并循环输出 3.3.对空值进行处理,替换 3.4.增加一列,并对新增列的第一行进行赋值 3 ...

  8. PB 操作EXCEL表的方法

    1.创建execl对象 eole=CREATEOBJECT("Excel.application")  2.添加新工作簿  eole.Workbooks.add  3.设置第3个工 ...

  9. python pandas操作excel表

    原始excel表 要转换成的excel表 代码 import pandas as pdclass Daletou(object):def __init__(self):# 读取excel表的哪几列se ...

最新文章

  1. 常用Linux路由命令(route、ip、ifconfig等等)
  2. 韬光养晦的Sony AI,凭什么与Google和Facebook平起平坐?
  3. 深度学习的实时面部姿势估计研究
  4. tar命令使用方法以及.tar.gz文件和.zip文件
  5. matlab检测图片马赛克,python 检测图片是否有马赛克
  6. (GIT)代码分支管理策略
  7. thinkphp框架使用心得
  8. java中的快速生成代码
  9. python字典遍历的4种方法
  10. ITK:使用Otsu方法将前景和背景分开
  11. 京东云无线宝AX6600新品发布 预售价799元
  12. sem_wait sem_post信号量操作进本函数
  13. python 列表list相关知识
  14. 辽源市强化“智慧城市”建设 提高居民幸福指数
  15. Android的MediaPlayer架构介绍
  16. 前端H5 使用百度统计进行埋点
  17. 《精力管理》读书笔记——第二部分
  18. 三相MMC并网逆变器/模块化多电平变换器/相间环流抑制/子模块电容电压均衡/载波移相调制
  19. allegro16.3生成gerber/光绘文件
  20. 学姐的大厂面试总结,想进大厂的必看!!!

热门文章

  1. 汽车4s店新车二手车租卖小程序源码系统 汽车行业通用版 含完整前后端+搭建教程
  2. 关于Sigmoid数据输出不是zero-centered的理解
  3. mac系统 SSH配置
  4. [GXYCTF2019]Ping Ping Ping
  5. 微信小程序客服统计功能:小程序客服能统计考勤和工作量了
  6. Spark SQL 内置函数(一)Array Functions(基于 Spark 3.2.0)
  7. 折腾黑苹果走过的坑及一些解决方案
  8. Wave Vector and Wavenumber(波矢与波数)
  9. 前5个android游戏,没有微交易的5个有趣的高级Android游戏
  10. 支持1t内存的服务器主板,自古华擎出妖板,单系统1TB内存:华擎 X299 Taichi CLX 支持 1TB DDR4内存...