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 ...
随机推荐
- 《转》---使用递归方法DataTable 绑定 TreeView
转自:http://blog.sina.com.cn/s/blog_8944756d01016yaj.html 前台: <asp:View ID="view0" runat= ...
- 用JavaScript操作Media Queries
在响应式(或自适应)设计中要用到Media Queries这个CSS属性,但在某些时候我们需要对Media Queries进行动态操作,这时候可以使用Javascript. 如以下Media Quer ...
- SecureCRT快捷键
ctrl + a : 移动光标到行首ctrl + e :移动光标到行尾crtl + b: 光标前移1个字符crtl + f : 光标后移1个字符 crtl + h : 删除光标之前的一个字符c ...
- JavaScript基础---作用域,匿名函数和闭包【转】
匿名函数就是没有名字的函数,闭包是可访问一个函数作用域里变量的函数. 一.匿名函数 //普通函数 function box() { //函数名是 box return 'TT'; } //匿名函数 f ...
- Oracle实现自增方式:序列+触发器
Oracle不能像MySQL那样设置主键自增,Oracle用 <序列+触发器>的方式使数据表的一列或多列实现自增 序列sequence+触发器trigger:实现数据表S_DEPART中的 ...
- encodeURI
encodeURI("http://www.cnblogs.com/season-huang/some other thing"); //整个URL进行编码"http:/ ...
- win7 web开发遇到的问题-由于权限不足而无法读取配置文件,无法访问请求的页面
错误一: HTTP Error 500.19 - Internal Server Error配置错误: 不能在此路径中使用此配置节.如果在父级别上锁定了该节,便会出现这种情况.锁定是默认设置的 (ov ...
- 使用AWT组件实现验证码功能
import java.awt.Color; import java.awt.Font; import java.awt.FontMetrics; import java.awt.Graphics2D ...
- 用时间生成用户Id
用用户注册时的时间,作为新用户的Uid: /** * 生成用户id,用时间生成 * * @return */ public static String date2UserId() { SimpleDa ...
- java运算符的优先级
Java 编辑 运算符 结合性 [ ] . ( ) (方法调用) 从左向右 ! ~ ++ -- +(一元运算) -(一元运算) 从右向左 * / % 从左向右 + - 从左向右 << & ...