excel批量导入数据库SQL server
思路:
第一是文件上传,可以参照Jakarta的FileUpload组件,用普通的Post也就行了。
第二是Excel解析,用JSL或者POI都行
第三是数据保存,这个应该简单吧,一个循环,一行对应一条数据,写好了方法循环赋值调用就行了。
第四是查询和显示,这个更简单了,不用多说。
第一,上传
SmartUpload mySmartUpload = new SmartUpload();
// 时间转换
SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss");
SimpleDateFormat formatter1 = new SimpleDateFormat("yyyyMM");
boolean sign = true;
String date1 = formatter1.format(new Date());
String date2 = "";
String ext = "";
// 获取当前项目路径
String path = config.getServletContext().getRealPath("/");
String path1 = path + "upload/excel/" + date1;
System.out.println("上传的文件目录为:"+path1);
// 创建文件夹
File dirFile = null;
try {
dirFile = new File(path1);
dirFile.mkdirs();
} catch (Exception e) {
e.printStackTrace();
System.out.println(e);
}
try {
// 初始化
mySmartUpload.initialize(config, request, response);
// 设定允许上传的文件(通过扩展名限制),仅允许excel文件
mySmartUpload.setAllowedFilesList("xls");
// 上传
mySmartUpload.upload();
// 获取文件后缀名
ext = mySmartUpload.getFiles().getFile(0).getFileExt();
// 生成文件名
date2 = formatter.format(new Date());
// 保存
mySmartUpload.getFiles().getFile(0).saveAs(path1 + "/" + date2 + "." + ext);
} catch (Exception e) {
e.printStackTrace();
sign = false;
}
if (sign == true) {
String apkPath = "upload/excel/" + date1 + "/" + date2 + "." + ext;
String version = mySmartUpload.getRequest().getParameter("version");
Map<String, Object> vers = new HashMap<String, Object>();
vers.put("version", version);
vers.put("apk", apkPath);
int result = 0;
result = versionDao.addVersion(vers);
if (result > 0) { //上传成功
第二 ,解析
// poi解析
FileInputStream fis=null;
List<UserInfo> list=new ArrayList<UserInfo>();
try {
System.out.println("开始解析数据。。。。。");
String fi=dirFile+"/"+date2+"." + ext;
System.out.println("解析的文件:"+fi);
fis=new FileInputStream(dirFile+ "/" +date2 + "." + ext);
HSSFWorkbook book=new HSSFWorkbook(fis);
HSSFSheet sheet=book.getSheetAt(0);//第一个sheet
int lastRowNum=sheet.getLastRowNum();//最大行数 有数据的
//一般excel第一行是标题
HSSFRow row=null;
for (int i = 1; i < lastRowNum; i++) {
row=sheet.getRow(i);
String num=getCellValue(row, 0);
String name=getCellValue(row, 1);
String address=getCellValue(row, 2);
String mail=getCellValue(row, 3);
UserInfo info=new UserInfo(num, name, address, mail);
list.add(info);
System.out.println("读取内容:"+num+","+name+","+address+","+mail+",");
}
System.out.println("内容:"+list+"。");
// out.print("<script>alert('添加ok!');location.href='versionAdd.jsp'</script>");
} catch (Exception e) {
System.out.println("excel解析出错!!!");
e.printStackTrace();
}
// 解析结束
第三,插入数据库
//解析excel成功
//下面操作入库
response.getWriter().println("excel data:<br/>");
for (UserInfo info : list) {
response.getWriter().println("name:"+info.getName()+" address:"+info.getAddress()+" mail:"+info.getMail()+"<br/>");
System.out.println("名称:"+info.getName()+"地址:"+info.getAddress()+"邮箱:"+info.getMail());
//jdbc链接数据库操作 一条条插入,这个不用我再写了吧???
int r=versionDao.addV2(info);
if(r>0){
System.out.println("插入成功!");
}
第四,读取。。。。(略)
excel批量导入数据库SQL server的更多相关文章
- 解决将Excel表导入到SQL Server数据库时出现Text was truncated or one or more characters had no match in the target code错误
编写python爬虫程序可以在电商.旅游等网站上爬取相关评论数据,这些数据可以用于词云制作.感情词分析.提取关键词等,也可以将爬取下来的数据以自己的方式进行展示.评论数据爬取下来后,就要考虑怎样入库, ...
- VBS将本地的Excel数据导入到SQL Server中
VBS将本地的Excel数据导入到SQL Server中 高文龙关注0人评论1170人阅读2017-05-14 12:54:44 VBS将本地的Excel数据导入到SQL Server中 最近有个测试 ...
- MVC3学习:将excel文件导入到sql server数据库
思路: 1.将excel文件导入到服务器中. 2.读取excel文件,转换成dataset. 3.循环将dataset数据插入到数据库中. 本例子使用的表格为一个友情链接表F_Link(LinkId, ...
- 如何把EXCEL数据导入到SQL SERVER数据库中 (转)
转:http://blog.csdn.net/jjp837661103/article/details/13509889 在我们完成一个项目开发之后,通常我们需要把客户的很多数据导入到数据库中,面对大 ...
- Excel数据导入到Sql server
问题:数据库内直接操作导致 错误 0xc020901c: 数据流任务 1: 源 - yndata1$.输出[Excel 源输出] 上的 源 - yndata1$.输出[Excel 源输出].列[ind ...
- 批量还原数据库 SQL Server 2008
1.如果你够懒,不想一步一步点路径,一步一步选择 2.如果你连单个备份数据库的存储过程都不想多执行,一般每还原一个需要修改数据库名 下面的脚本适合你: /*********************** ...
- C# 从Excel 批量导入数据库
最近遇到了关于 C# MVC 批量添加数据的问题,解决后就自己写了一个未完成的小Demo 不管什么编程语言都会提供操作Excel文件的方式,C#操作Excel主要有以下几种方式: 1.Excel 说 ...
- 关于如何将Excel数据导入到SQL Server中
面对大量的Excel数据我们可能会非常苦恼,如果一条一条的插入到数据库:不仅会耗大量的时间,而且还可能会发生错误,现在我来说一下如何导入数据! 1.准备工作 首先要在Excel中建立数据表对应的数据字 ...
- Excel批量插入的SQL Server
首先新建一个WPF的项目,名为ExcelToServerDemo 到Nuget去安装NPOI的Nuget包,点击安装即可,会自动引用项目. 新建一个Student的表格,有名字,年龄,性别,地址,以及 ...
随机推荐
- Caused by: java.lang.ClassNotFoundException: java.com.bj186.ssm.controller.UserController
在搭建SpringMVC的时候,遇到的这个问题真的很奇葩, 找不到UserController这个类 这明明不就在工程目录下吗? 经过了一番艰苦卓绝的斗争, 才发现原来是包导少了 之前导入的包是: & ...
- vue 获取汉字的全拼、简拼、首拼
1.封装公共方法,获取汉字的全拼.简拼.首拼 export const Pinyin = { _JMcode:{ "-":"", "—":& ...
- 005 String s = "Hello";s = s + " world!";执行这两行代码执行后,原始的 String 对象中的内容到底变了没有?
原始的String对象中的内容没有改变成“Hello world”. 1.原因 因为在Java中String类被设计成不可改变的类,所以String类的所有对象都是不可变的.第一句代码中,s(存储在栈 ...
- Django-C001-快速入门
此文章完成度[100%]留着以后忘记的回顾.多写多练多思考,我会努力写出有意思的demo,如果知识点有错误.误导,欢迎大家在评论处写下你的感想或者纠错. Django Django是一个开放源码的We ...
- k8s framework
reference 1. k8s master framework master master 是k8s cluster运行着daemon服务:kube-apiserver, kube-schedul ...
- iCheck获取单选和复选框的值和文本
//获取单选和复选框的值//parameters.type:"radio","checkbox"//parameters.name:input-name//pa ...
- HashMap允许将null用作键 也允许将null作为值
HashMap不能保证元素的顺序,HashMap能够将键设为null,也可以将值设为null. 与之对应的是Hashtable,(注意大小写:不是HashTable),Hashtable不能将键和值设 ...
- OJ 大整数减法
描述 求两个大的正整数相减的差. 输入 共2行,第1行是被减数a,第2行是减数b(a > b).每个大整数不超过200位,不会有多余的前导零. 输出 一行,即所求的差. 样例输入 9999999 ...
- UVa-12096-集合栈计算机
这题的话,我们读入操作之后,首先对于空集就是初始化为空. 我们可以使用typedef 对于 set 重命名为Set,这样就可以直接用Set()的语法进行空集的初始化了. 这题主要是对于集合的处理,我们 ...
- [UVA] 704 Colour Hash
所谓"周界搜索",练习搜索的好题,双向宽搜/迭代加深均可,还有很多细节有待完善,判重有比set更优的结构,宽搜还没写,先存一下. //Writer:GhostCai &&a ...