目录

  • 介绍
    • 选择Excel文件并读取内容
    • 将数据内容写到数据库
    • 更新dataGridView内容

介绍

本篇文章主要介绍C# winForm窗体如何打开Excel文件读取其中的内容,并将其内容写到数据库,同时通过DataGridView控件显示写入到数据库的数据内容。

选择Excel文件并读取内容

我的主窗体上添加了一个按钮和一个DataGridView控件,点击按钮来选择Excel文件,实例代码如下:

 OpenFileDialog openFileDialog = new OpenFileDialog();openFileDialog.Filter = "Files|*.xls;*.xlsx";  //设置打开文件的后缀类型openFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyComputer);//打开我的电脑文件夹string fileType = ".xls,.xlsx";if (openFileDialog.ShowDialog()==DialogResult.OK){string filePathAndName = openFileDialog.FileName;//文件路径以及文件名string fileName = System.IO.Path.GetFileName(filePathAndName); //获取文件名和扩展名string fileEx = System.IO.Path.GetExtension(fileName);//获取文件的扩展名if (fileType.Contains(fileEx)){DataSet myDataSet = new DataSet();try{//连接字符串 其中 "HDR=yes;"是说Excel文件的第一行是列名而不是数据,"HDR=No;"正好与前面的相反。//           其中 "IMEX=1 "如果列中的数据类型不一致,使用"IMEX=1"可必免数据类型冲突。string strConn = "Provider=Microsoft.Ace.OleDb.12.0;" + "data source=" + filePathAndName + ";Extended Properties='Excel 12.0; HDR=Yes; IMEX=1'"; //此连接可以操作.xls与.xlsx文件OleDbConnection conn = new OleDbConnection(strConn);conn.Open();//返回Excel的架构,包括各个sheet表的名称,类型,创建时间和修改时间等 DataTable dtSheetName = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "Table" });//包含excel中表名的字符串数组string[] strTableNames = new string[dtSheetName.Rows.Count];for (int i = 0; i < dtSheetName.Rows.Count; i++){strTableNames[i] = dtSheetName.Rows[i]["TABLE_NAME"].ToString();}OleDbDataAdapter myCommand = null;DataTable dt = new DataTable();//从指定的表名查询数据,这里选择第一个string strExcel = "select * from [" + strTableNames[0] + "]";myCommand = new OleDbDataAdapter(strExcel, strConn);myCommand.Fill(myDataSet, "ExcelInfo");DataTable table = myDataSet.Tables["ExcelInfo"].DefaultView.ToTable();//接下来将数据写入到数据库//......}catch (Exception ex){MessageBox.Show(""+ ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);throw;}}elseMessageBox.Show("文件类型不对", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);}

将数据内容写到数据库

因为我的Excel表里存放的是人员信息,所以我用一个user实体来接收然后写到数据库,示例代码如下:

        dataGridView1.DataSource = null;  //清空dataGridView//dataGridView1.DataSource = table;  //绑定数据源 我是一条条更新的数据 所以此处注释掉User user = new User();DBHelp db = new DBHelp();for (int i = 0; i < table.Rows.Count; i++){user.Name = table.Rows[i][1].ToString();user.Job = table.Rows[i][2].ToString();user.Email = table.Rows[i][3].ToString();user.Phone1 = table.Rows[i][4].ToString();user.Phone2 = table.Rows[i][5].ToString();db.Insert(user);  //数据写入数据库UpdateUI(user);//dataGridView新增一行数据}MessageBox.Show("数据导入完成", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);

更新dataGridView内容

每插入数据库一行数据便通过dataGridView控件更新显示一条数据,示例代码如下:

        public void UpdateUI(User user){//利用dataGridView1.Rows.Add()事件为DataGridView控件增加新的行,//该函数返回添加新行的索引号,即新行的行号int index = this.dataGridView1.Rows.Add();dataGridView1.Rows[index].Cells[0].Value = index + 1;dataGridView1.Rows[index].Cells[1].Value = user.Name;dataGridView1.Rows[index].Cells[2].Value = user.Job;dataGridView1.Rows[index].Cells[3].Value = user.Email;dataGridView1.Rows[index].Cells[4].Value = user.Phone1;dataGridView1.Rows[index].Cells[5].Value = user.Phone2;}

不过,运行该程序便会发现问题,UpdateUI方法并不能做到插入一条数据便更新显示一条数据,每次都是全部数据插入完后才会显示全部的数据内容,显然,这不是我们想要的效果,不过,在UpdateUI方法中加入以下任意一个方法就可以解决这个问题了,如下:

        dataGridView1.Refresh();//重绘控件dataGridView1.Update();//重绘控件

另外需要注意的是,dataGridView控件需要在加载的时候设置一下列的属性,比如我这样:

        dataGridView1.ColumnCount = 6;  //列数dataGridView1.ColumnHeadersVisible = true;  //显示列标题dataGridView1.Columns[0].Name = "编号";dataGridView1.Columns[1].Name = "姓名";dataGridView1.Columns[2].Name = "部门";dataGridView1.Columns[3].Name = "邮箱";dataGridView1.Columns[4].Name = "电话";dataGridView1.Columns[5].Name = "手机";

ok
到此结束。

.Net C# 如何读取Excel数据内容写入数据库并通过DataGridView控件动态刷新显示相关推荐

  1. 读取Excel 数据并写入到Word示例

    读取Excel 数据并写入到Word示例 0x01 读取Excel 数据并写入到Word示例 1.1 配置pom.xml 1.2 配置 application.properties 1.3 自定义配置 ...

  2. golang读取excel数据,写入sqlite3

    golang读取excel数据,写入sqlite3 golang读取excel数据,返回一个 []map[string]string 然后读取[]map[string]string,写入到sqlite ...

  3. python读excel数据并写入数据库的方法

    读取excel数据需要注意的地方以及读取方式: python读取excel表时,需要注意对时间的处理: 原因: 在使用xlrd读取Excel表格中的日期格式时,读出的内容和原来Excel表格中的内容不 ...

  4. 读去excel文件内容写入数据库

    思想 读取excel 文件中的内容 ,拼接字符串,将数据插入oracle数据库临时表中,再对临时表中的数据进行操作 package com.cici.testExcel;import java.io. ...

  5. python读excel并写入_Python读取Excel文件并写入数据库

    好方法最近迷上了高效处理数据的pandas,其实这个是用来做数据分析的,如果你是做大数据分析和测试的,那么这个是非常的有用的!!但是其实我们平时在做自动化测试的时候,如果涉及到数据的读取和存储,那么而 ...

  6. java读取excel数据保存到数据库中_java读取excel的内容(可保存到数据库中)

    //** poi jar包 // public classReadExcel { @SuppressWarnings("static-access")private staticS ...

  7. android读取excel数据库,Android 读取Excel数据并保存在本地数据库

    在工作中遇到需要将Excel的数据读取出来并保存在本地数据库中的操作,数据如下: 图片.png 需要做以下准备: 读取Excel的jar包[文章末尾会分享该jar包] 保存数据的数据库框架,在这里我们 ...

  8. 使用POI读取excel文件内容

    1.前言 项目中要求读取excel文件内容,并将其转化为xml格式.常见读取excel文档一般使用POI和JExcelAPI这两个工具.这里我们介绍使用POI实现读取excel文档. 2.代码实例: ...

  9. Visual C# 2005 - 如何于DataGridView控件中以跨数据行方式显示数据

    <?XML:NAMESPACE PREFIX = O /> 图表1 一般来说,每一个字段的内容会单独显示于DataGridView控件的一个数据行中.问题是,某些字段拥有大量文字数据,我是 ...

最新文章

  1. springboot mysql行锁_SpringBoot基于数据库实现简单的分布式锁
  2. 安全测试之XSS攻击
  3. export_symbol的使用
  4. 技术向:一文读懂卷积神经网络
  5. 加速Javascript:DOM操作优化
  6. QGS/300 performance issue
  7. 企业集成模式_企业集成模式简介
  8. 微信支付api的服务器上,服务器微信支付接口笔记(与app端对接)
  9. Windows Firewall/Internet Connection Sharing (ICS) 无法启动解决办法
  10. 简单的签到代码_【SAS小恩的代码段】02样本分布、两群体与组合差异性检定
  11. 新浪微博说说html,说说新浪微博
  12. python实训总结泰坦尼克号重建_Python之泰坦尼克号生存率分析
  13. java cropper_Image Cropper 的 JAVA 支持
  14. ubuntu使用教程
  15. matlab制作太阳系模型,一种太阳系模型的制作方法
  16. 第二章 Qt窗体应用------修改标题栏图标
  17. 邓元鋆:AMD的方法论
  18. 冰河在大学是如何度过的?
  19. 考公、事业编、央企国企私企外企、校招社招都在这些地方找到信息(精华)
  20. the system can not open the device or file specified解决方案

热门文章

  1. 小米Java笔试_JAVA后端笔试试题(一)
  2. 如何对udp端口进行扫描
  3. ctfshow-web78(文件包含)
  4. 数据流图-2(分层数据流图)
  5. 你去过(gan)大(huo)年(che),Down机别烦我
  6. js正则表达式进行格式校验
  7. 问:用宏定义一年有多少秒(忽略闰年)
  8. 前端算法及手写算法JavaScript
  9. FluentData
  10. 数据库单个插入操作转为批量插入