读取Execl表数据 导入数据库
不知不觉博客园园林都两年多了,我是今年毕业的应届生,最近公司项目需要改动,很多的数据需要导入,很多的实体类需要些。考虑到这些问题自己写了两个winform版的小工具,一个是读取Execl数据导入数据库,另一个是自动生成实体类,以及增,删,改的方法。今天先分享Execl数据导入数据库。基本上没什么界面就两个按钮而已。一个是选择导入的文件,一个是导入数据库按钮。
首先我写了一个MSSQLAction的类,取数据的类,相当于三层里面的SqlHelper类,里面有两个方法
一个是准备读取数据前的命令配置
public static void PrepareCommand(SqlConnection conn, SqlCommand cmd, SqlTransaction trans, CommandType cmdType, string cmdText, params SqlParameter[] value)
{
try
{
if (conn.State != ConnectionState.Open)
{
conn.Open();
}
cmd.Connection = conn;
if (trans != null)
{
cmd.Transaction = trans;
}
cmd.CommandText = cmdText;
cmd.CommandType = cmdType;
if (value != null)
{
foreach (SqlParameter item in value)
{
cmd.Parameters.Add(item);
}
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
另一个就是操作增,删,改的方法
public static int ExecuteNonQuery(string connString, CommandType cmdTyep, string cmdText, params SqlParameter[] value)
{
using (SqlConnection conn = new SqlConnection(connString))
{
SqlCommand cmd = new SqlCommand();
PrepareCommand(conn, cmd, null, cmdTyep, cmdText, value);
int result = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return result;
}
}
取数据的类写好了,现在写Form的后台,一个四个方法:
一个是选择文件的事件,filepath 是一个全局变量
private void File_Click(object sender, EventArgs e)
{
OpenFileDialog file = new OpenFileDialog();
file.ShowDialog();
filepath = file.FileName;
label1.Text = file.FileName;
}
一个是获取Execl数据的方法
public List<System.Data.DataTable> GetExcelDatatable(string fileUrl)
{
const string cmdText = "Provider=Microsoft.Ace.OleDb.12.0;Data Source={0};Extended Properties='Excel 12.0; HDR=Yes; IMEX=1'";
//建立连接
OleDbConnection conn = new OleDbConnection(string.Format(cmdText, fileUrl));
try
{
//打开连接
if (conn.State != ConnectionState.Open)
{
conn.Open();
}
List<System.Data.DataTable> list = new List<DataTable>();
System.Data.DataTable schemaTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
//获取Excel的第一个Sheet名称
for (int i = 0; i < schemaTable.Rows.Count; i++)
{
System.Data.DataTable dt = new DataTable();
string sheetName = schemaTable.Rows[i]["TABLE_NAME"].ToString().Trim();
string strSql = "select * from [" + sheetName + "]";
OleDbDataAdapter da = new OleDbDataAdapter(strSql, conn);
DataSet ds = new DataSet();
da.Fill(ds);
dt = ds.Tables[0];
list.Add(dt);
}
return list;
}
catch (Exception exc)
{
throw exc;
}
finally
{
conn.Close();
conn.Dispose();
}
}
一个是往数据库插入数据的方法
public int InsetData(System.Data.DataTable dt)
{
int i = 0;
foreach (DataRow dr in dt.Rows)
{
string findDate = dr[0].ToString().Trim() == "" ? null :
Convert.ToDateTime(dr[0].ToString().Trim()).ToShortDateString().ToString();
string date = Convert.ToDateTime(findDate).ToString("s");
string resultDate = date.Substring(0, 10);
string brand = dr[1].ToString().Trim() == "" ? null : dr[1].ToString().Trim();
string storeName = dr[2].ToString().Trim() == "" ? null : dr[2].ToString().Trim();
string type = storeName.Substring(0, 2);
string city = dr[3].ToString().Trim() == "" ? null : dr[3].ToString().Trim();
string throughTrain = dr[4].ToString().Trim() == "" ? "0" : dr[4].ToString().Trim();
string showNumber = dr[5].ToString().Trim() == "" ? "0" : dr[5].ToString().Trim();
string payNumber = dr[6].ToString().Trim() == "" ? "0" : dr[6].ToString().Trim();
string freeNumber = dr[7].ToString().Trim() == "" ? "0" : dr[7].ToString().Trim();
string drillShow = dr[8].ToString().Trim() == "" ? "0" : dr[8].ToString().Trim();
string visitorsNumber = dr[9].ToString().Trim() == "" ? "0" : dr[9].ToString().Trim();
string commission = dr[10].ToString().Trim() == "" ? "0" : dr[10].ToString().Trim();
string activity = dr[11].ToString().Trim() == "" ? "0" : dr[11].ToString().Trim();
string other = dr[12].ToString().Trim() == "" ? "0" : dr[12].ToString().Trim();
string strConnection = "server=.;database=tests;Integrated Security=True";
string strSql = "Insert into LemonFlagshipStore(Lemon1,Lemon2,Lemon3,Lemon4,Lemon5,Lemon6,Lemon7,Lemon8,Lemon9,Lemon10,Lemon11,Lemon12,Lemon13,Lemon14) Values ('" + brand + "','" + city + "','" + resultDate + "','" + storeName + "','" + commission + "','" + activity + "','" +
throughTrain + "','" + drillShow + "','" + other + "','" + freeNumber + "','" +
payNumber + "','" + showNumber + "','" + visitorsNumber + "','" + type + "')";
int result = MSSQLAction.ExecuteNonQuery(strConnection, CommandType.Text, strSql);
i++;
}
return i;
}
最后就是一个简单点击导入数据的事件
private void Import_Click(object sender, EventArgs e)
{
try
{
List<System.Data.DataTable> table = this.GetExcelDatatable(filepath);
int listCount = 0;
foreach (System.Data.DataTable dt in table)
{
int result = this.InsetData(dt);
listCount += result;
}
MessageBox.Show("一共导入" + listCount + "数据", "导入成功");
}
catch (Exception ex)
{
MessageBox.Show("导入失败\r\n" + "失败原因为:\r\n" + ex, "提示");
}
}
基本的代码实现就这么多,当然插入要使用此代码的话自己要把数据库链接和字符串和sql的表明字段改了。做完之后是不是觉得很简单,呵呵.....
另一个改天分享。如若需要源码:QQ 2212907254
读取Execl表数据 导入数据库的更多相关文章
- Excel表数据导入数据库表中
***Excel表数据导入到数据库表中 通过数据库表的模板做成‘Excel’表的数据导入到数据库相应的表中(注意:主表 和 从表的关系,要先导‘主表’在导入从表) 过程:通过数据库的导入工具—先导入为 ...
- java后端服务器读取excel将数据导入数据库
使用的是easypoi,官网文档:http://easypoi.mydoc.io/ /** * 导入Excel文件 */ @PostMapping("/importTeacher" ...
- mysqlconnector将EXCEL表数据导入数据库
测试excel和脚本放在同一个目录 测试excel和脚本放在同一个目录 #!/usr/bin/env python #coding=utf-8 import xlrd import mysql.con ...
- 读取Execl表 导入数据库
不知不觉博客园园林都两年多了,我是今年毕业的应届生,最近公司项目需要改动,很多的数据需要导入,很多的实体类需要些.考虑到这些问题自己写了两个winform版的小工具,一个是读取Execl数据导入数据库 ...
- Excel表数据导入Sql Server数据库中
Excel表数据导入Sql Server数据库的方法很多,这里只是介绍了其中一种: 1.首先,我们要先在test数据库中新建一个my_test表,该表具有三个字段tid int类型, tname nv ...
- 把execel表数据导入mysql数据库
今天,是我来公司第二周的第一天. 作为新入职的实习生,目前还没适合我的实质项目工作,今天的学习任务是: 把execel表数据导入到mysql数据库,再练习下java操作JDBC. 先了解下execel ...
- C# DateTime的11种构造函数 [Abp 源码分析]十五、自动审计记录 .Net 登陆的时候添加验证码 使用Topshelf开发Windows服务、记录日志 日常杂记——C#验证码 c#_生成图片式验证码 C# 利用SharpZipLib生成压缩包 Sql2012如何将远程服务器数据库及表、表结构、表数据导入本地数据库
C# DateTime的11种构造函数 别的也不多说没直接贴代码 using System; using System.Collections.Generic; using System.Glob ...
- Java读取Execl表格数据
在前面提到用java代码新建一个Execl 表格并添加数据到表格中, 这次写了一个读取Execl表格数据并添加导数据库中的案列 给定对方一个Execl模板表格,如果导入的Execl表格和预订的表格不相 ...
- 使用python将excel数据导入数据库
使用python将excel数据导入数据库 因为需要对数据处理,将excel数据导入到数据库,记录一下过程. 使用到的库:xlrd 和 pymysql (如果需要写到excel可以使用xlwt) 直接 ...
随机推荐
- 初始JAVA中浅拷贝和深拷贝
1. 简单变量的复制 public static void main(String[] args) { int a = 5; int b = a; System.out.println(a); Sys ...
- 前端h5遇到的问题及解决办法
以后遇到的问题都记录在这里. 1.由于先有的pc端后需求手机端,所以没有用框架做适配,而是手动媒体查询进行手机端.pad.pc 三端适配,界面比较简单,所以这么做也不复杂,就是坑比较多. 2.移动和p ...
- jQuery Event.which 属性
which属性用于返回触发当前事件时按下的键盘按键或鼠标按钮. 对于键盘和鼠标事件,该属性用于确定你按下的是哪一个键盘按键或鼠标按钮. which属性对DOM原生的event.keyCode和even ...
- 11-hdfs-NameNode-HA-wtihQJM解决单点故障问题
在hdfs中, NN只有一个, 但其中保存的数据尤其重要, 所以需要将元数据保存, 其中源数据有2个形式, fsimage 和 edit文件, 最简单的解决方法就是复制fsimage, 并在文件修改时 ...
- IDEA在当前类中查找方法快捷键--转
https://blog.csdn.net/weixin_40739833/article/details/81298472 IDEA工具是当前类中查找一个方法快捷键: Ctrl + F12 例如在 ...
- 任务三十七:UI组件之浮出层
任务三十七:UI组件之浮出层 面向人群: 有一定JavaScript基础 难度: 低 重要说明 百度前端技术学院的课程任务是由百度前端工程师专为对前端不同掌握程度的同学设计.我们尽力保证课程内容的质量 ...
- 二维码ZBar之ZBarReaderView
参考:http://www.chinatarena.com/Html/iospeixun/201301/3985.html http://blog.csdn.net/chenyong05314/a ...
- fastjson之JSONObject、JSONArray
JSONObject,JSONArray是JSON的两个子类. 首先我们来看JSONObject源码: 会发现JSONObject是继承Map<String, Object>,并且都是使用 ...
- 单点登录在asp.net中的简单实现
系统的基本架构 我们假设一个系统System包含Service客户服务中心.Shop网上购物中心和Office网上办公中心三个独立的网站.Service管理客户的资料,登录和注销过程.不论客户访问Sy ...
- 远程桌面如何向远程的计算机发送ctrl+alt+del
远程桌面如何向远程的计算机发送ctrl+alt+del ? 可以使用 ctrl+alt+end 组合键代替 ctrl+alt+del 组合键