C#通过Nopi操作EXCEL表
/// <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表相关推荐
- JAVA使用POI操作Excel表,XSSF(xlsx)和HSSF(xls)
JAVA使用POI操作Excel表,XSSF(xlsx)和HSSF(xls) *** POI的结构: ---*HSSF - 提供读写Microsoft Excel格式档案的功能. ---*XSSF - ...
- openpyxl 操作 Excel表的格基本用法
在本教程中,将Python3和openpyxl库一起使用来操作 Excel 表格. 本文将介绍如下操作: 如何在内存中创建工作簿 如何从工作簿中检索.创建.复制.移动和删除工作表 如何从文件创建工作簿 ...
- java excel生成_java操作excel表,包括创建、读取、以及修改【via 度娘】
作者的网站上对它的特征有如下描述: ● 支持Excel 95-2000的所有版本 ● 生成Excel 2000标准格式 ● 支持字体.数字.日期操作 ● 能够修饰单元格属性 ● 支持图像和图表 应该说 ...
- java操作excel表
文章分类:Java编程 http://developers.sun.com.cn/blog/functionalca/entry/java读写excel简介 JAVA EXCEL API简介 Java ...
- C#操作Excel表
本文主要介绍一下c#来操作excel表格,主要介绍我使用的,我是使用第三方提供的函数库(NPOI)来进行excel的操作,而NPOI库函数在其官网下,我这里就不拿出来了. 1:NPOI库函数 NPOI ...
- NOPI操作Excel
//自定义颜色 ,将颜色转换成NOPI的颜色 private static short GetXLColour(HSSFWorkbook workbook, System.Drawing.Color ...
- Python之如何使用pandas操作Excel表
目录 1.前言 2.读取Excel 3.对Excel进行操作 3.1.获取行号.列名 3.2.获取单元格的值,并循环输出 3.3.对空值进行处理,替换 3.4.增加一列,并对新增列的第一行进行赋值 3 ...
- PB 操作EXCEL表的方法
1.创建execl对象 eole=CREATEOBJECT("Excel.application") 2.添加新工作簿 eole.Workbooks.add 3.设置第3个工 ...
- python pandas操作excel表
原始excel表 要转换成的excel表 代码 import pandas as pdclass Daletou(object):def __init__(self):# 读取excel表的哪几列se ...
最新文章
- 常用Linux路由命令(route、ip、ifconfig等等)
- 韬光养晦的Sony AI,凭什么与Google和Facebook平起平坐?
- 深度学习的实时面部姿势估计研究
- tar命令使用方法以及.tar.gz文件和.zip文件
- matlab检测图片马赛克,python 检测图片是否有马赛克
- (GIT)代码分支管理策略
- thinkphp框架使用心得
- java中的快速生成代码
- python字典遍历的4种方法
- ITK:使用Otsu方法将前景和背景分开
- 京东云无线宝AX6600新品发布 预售价799元
- sem_wait sem_post信号量操作进本函数
- python 列表list相关知识
- 辽源市强化“智慧城市”建设 提高居民幸福指数
- Android的MediaPlayer架构介绍
- 前端H5 使用百度统计进行埋点
- 《精力管理》读书笔记——第二部分
- 三相MMC并网逆变器/模块化多电平变换器/相间环流抑制/子模块电容电压均衡/载波移相调制
- allegro16.3生成gerber/光绘文件
- 学姐的大厂面试总结,想进大厂的必看!!!
热门文章
- 汽车4s店新车二手车租卖小程序源码系统 汽车行业通用版 含完整前后端+搭建教程
- 关于Sigmoid数据输出不是zero-centered的理解
- mac系统 SSH配置
- [GXYCTF2019]Ping Ping Ping
- 微信小程序客服统计功能:小程序客服能统计考勤和工作量了
- Spark SQL 内置函数(一)Array Functions(基于 Spark 3.2.0)
- 折腾黑苹果走过的坑及一些解决方案
- Wave Vector and Wavenumber(波矢与波数)
- 前5个android游戏,没有微交易的5个有趣的高级Android游戏
- 支持1t内存的服务器主板,自古华擎出妖板,单系统1TB内存:华擎 X299 Taichi CLX 支持 1TB DDR4内存...