excel表里的数据导入到数据库里
采用的是jxl,所以需要导jxl-2.4.2.jar的jar包.(前提知道excel表的目录):
//用log记录异常信息
private static final Logger log = LoggerFactory.getLogger(NwcfgdmService.class);
//采用spring注解方式调用dao层的查询方法
@Autowired
private CirCuitBoInf cirCuitBo;
public void excelToDb(){
Workbook rwb=null;
FileWriter fw = null;
try {
//默认的excel路径为D://opt/BOCO/name.xls
InputStream is=new FileInputStream(new File("D:"+File.separator+"opt"+File.separator+"BOCO"+File.separator+"name.xls"));//读取文件
rwb=Workbook.getWorkbook(is);
Sheet rs=rwb.getSheet(0);
try {
//同是将数据库插入出现的异常记录在error.text文件上
fw = new FileWriter("D:"+File.separator+"opt"+File.separator+"BOCO"+File.separator+"error.text",true);
// 第二个参数 true 表示写入方式是追加方式
} catch (Exception e) {
e.printStackTrace();
log.error("书写异常日志信息失败",e);
}
int rsRows=rs.getRows();
// System.out.println(rsRows);
int rsClos=rs.getColumns();
// System.out.println(rsClos+"----");
// 因为excel的第一行一般都是实体类的属性。所以从i从1开始取,这样就直接能读取数据了
for(int i=1;i<rsRows;i++){
for(int j =0;j<rsClos;j++){
//默认最左边编号也算一列,所以这里是j++
//时间的格式默认是yyyy/MM/dd,格式可自定义
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
String id=rs.getCell(j++, i).getContents()+"";
String name=rs.getCell(j++, i).getContents()+"";
String end_date = rs.getCell(j++, i).getContents();
Date end_dates = new Date();
if(! end_date.equals("")){
try{
end_dates = sdf.parse(end_time);
}catch(ParseException e){
e.printStackTrace();
log.error("名字为"+name+"的使用期限的格式不对,格式应该为'yyyy/MM/dd'",e);
fw.write("名字为"+name+"的使用期限的格式不对,格式应该为'yyyy/MM/dd'"+"\r\n");
}
}
// 接下来就是把从excel读取到的内容逐个set到Person对象中。然后将对象添加到集合。
Person c =new Person();
c.setId(id);
c.setName(name);
c.setEnd_date(end_dates);
try {
cirCuitBo.addCirCuit(c);
} catch (UncategorizedSQLException e) {
e.printStackTrace();
log.error(c.getName()+"这条数据的某个字段长度超出了数据库定义的最大长度",e);
fw.write(c.getName()+"这条数据的某个字段长度超出了数据库定义的最大长度"+"\r\n");
// System.out.println("错误信息:"+e+"---------");
}catch(DataIntegrityViolationException e){
e.printStackTrace();
log.error(c.getName()+"这条数据的时间格式不对",e);
fw.write(c.getName()+"这条数据的时间格式不对"+"\r\n");
}catch(Exception e){
e.printStackTrace();
log.error(c.getName()+"这条数据插入失败",e);
}
}
}
}
}catch (FileNotFoundException e) {
e.printStackTrace();
log.error("该目录下不存在该文件",e);
}catch(Exception e){
e.printStackTrace();
log.error("读取文件失败,请重新操作",e);
}finally{
rwb.close();
try{
fw.close();
}catch (IOException e){
e.printStackTrace();
log.error("操作失败",e);
}
}
}
excel表里的数据导入到数据库里的更多相关文章
- jsp+servlet上传excel并将数据导入到数据库表的实现方法
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- Excel、记事本数据导入到数据库
将手机号批量导入数据库.思路:先将要导入的文件传上项目里,然后读取文件的每行数据并插入数据库,操作完后再将上传的文件删除 文件示例: Excel: 记事本: 前台代码: <div class ...
- sqlserver怎么将excel表的数据导入到数据库中
在数据库初始阶段,我们有些数据在EXCEL中做好之后,需要将EXCEL对应列名(导入后对应数据库表的字段名),对应sheet(改名为导入数据库之后的表名)导入指定数据库, 相当于导入一张表的整个数据. ...
- SQL语句:把Excel文件中数据导入SQL数据库中的方法
1.从Excel文件中,导入数据到SQL数据库情况一.如果接受数据导入的表不存在 select * into jd$ from OPENROWSET('MICROSOFT.JET.OLEDB.4.0' ...
- 把excel中的数据导入到数据库
import.php <?php header("Content-Type:text/html;charset=utf-8"); echo '<html> < ...
- 将Excel数据导入mysql数据库的几种方法
将Excel数据导入mysql数据库的几种方法 “我的面试感悟”有奖征文大赛结果揭晓! 前几天需要将Excel表格中的数据导入到mysql数据库中,在网上查了半天,研究了半天,总结出以下几种方法,下面 ...
- 用ttBulkCp把excel中的数据导入到timesten数据库中
最近要做数据预处理,需要用到数据库.而且是以前从来没听说过的TimesTen. 首要目标是要把Excel里的数据,导入到TimesTen数据库中.而TimesTen在win10里用不了,于是我就在虚拟 ...
- java实现EXCEL数据导入到数据库中的格式问题的解决
之前作为项目甲方,加之java接触不多,在java web开发方面都是打下手的份. 对于EXCEL数据导入到数据库这个问题一直老是出现格式原因而导入失败也是未免惆怅,开发团队也是只说回去检查一下格式. ...
- 把Excel数据导入到数据库
引入命名空间 using System.IO; using System.Data; using System.Data.OleDb; 引入命名空间 首先要把Excel上传到服务器 //上传Excel ...
随机推荐
- 转--CSS选择器详解(一)常用选择器
今天复习一下CSS的知识,看了篇文章觉得很好,转来备用. 转自:http://www.cnblogs.com/fattydoit/p/3492028.html 目录 类型选择器 类选择器 ID选择器 ...
- 读取Cookie及Cookie所有属性操作方法
读取Cookie及Cookie所有属性操作方法 2013-08-04 22:21:43| 分类: 技术 | 标签:cookie |举报|字号 订阅 要把Cookie发送到客户端,Servle ...
- MySQL索引实现
摘自:http://blog.codinglabs.org/articles/theory-of-mysql-index.html 在MySQL中,索引属于存储引擎级别的概念,不同存储引擎对索引的实现 ...
- 流控panabit的安装及配置
软件: 在panabit的下载页面上,没有最新的版本.刚开始就是从这个地方下载的,但是有一块网卡怎么也找不到.各种加载网卡驱动,最后失败. 之后,从其论坛中发现了最新的2013.05版本,将ISO刻盘 ...
- 哈希(Hask)
编辑 Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值.这种转换是一种压缩映射 ...
- ionic build --release android
ionic bulid android ionic build --release android keytool -genkey -v -keystore demo.keystore -alias ...
- 【同行说技术】Python程序员小白变大神必读资料汇总( 三)
在文章<Python开发.调试.爬虫类工具大全>里面向大家总结了各种实用工具和爬虫技术,今天小编收集了5篇带有实例干货的资料,赶紧来看看吧!另外,喜欢写博客的博主可以申请加工程师博主交流群 ...
- wp8.1 Study13:在WP8.1中分享文件和数据
绪论:不同于windows, 在wp8.1中,如果不止一个程序可以接受其Uri或者文件,shell会提供一个界面让用户选择用哪个程序.而在windows中,用户可以在设置那里设置各种文件和Uri的默认 ...
- VC单文档对话框添加托盘图标
一 单文档添加托盘 1. 在CMainFrame中定义NOTIFYICONDATA结构m_notify 2.在OnCreate中添加托盘初始化代码 int CMainFrame::OnCreate(L ...
- checkbox的全选、反选、删除(MainActivity)
package com.example.ay; import java.util.ArrayList;import java.util.List; import com.example.adapter ...