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 ...
随机推荐
- urlencode在url中的作用
urlencode编码能解决特殊字符的传输问题. 使用urlencode主要用于正常识别输入的汉字.空格以及其他特殊字符. 列如: 一产品名称为A&T Plastic,在产品列表中就产生了这样 ...
- asp.net core StaticFiles中间件修改wwwroot
new StaticFileOptions() { FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentD ...
- 7款适用老旧设备并对初学者非常友好的轻量级Linux发行版
我们由从 7 到 1 的顺序向大家介绍. 7. Linux Lite 正如其名,Linux Lite 是 Linux 发行版的一个轻量级版本,用户并不需要强大的硬件就可以将它跑起来,而且其使用非常简单 ...
- linux ps命令介绍
来源<鸟哥的linux私房菜> ps:将某个时间点的程序运作情况撷取下来 [root@linux ~]# ps aux [root@linux ~]# ps -lA [root@linux ...
- Java:数组
数组 数组是一种引用数据类型(所以才会看到 new int[]),数组的长度初始化完成后是固定的.在内存中初始化数组后的空间就固定下来,即便数组中的内容被清空了,但在内存中占有的空间保留了下来,依然是 ...
- spring 标注
1.添加支持标注的spring中的jar包: spring-context.jar spring-context-support.jar 2.在xml中配置命名空间和schema <beans ...
- qml 一些知识点
1.pagestack进行页面调整的时候,需要对页面状态做一些跟踪: Stack.onStatusChanged: { if (Stack.status == Stack.Active) { //可以 ...
- java面向对象编程——第二章 java基础语法
第二章 java基础语法 1. java关键字 abstract boolean break byte case catch char class const continue default do ...
- iframe子页面与父页面通信
同域下父子页面的通信 父页面: <!DOCTYPE html> <html> <head lang="en"> <meta charset ...
- 常见JS(JavaScript)冲突解决方法
1.一般JS冲突解决办法 a.最容易出现的就是js的命名冲突 ①.变量名冲突 变量有全局变量和局部变量当全局变量变量和局部变量名称一致时,就会js冲突,由于变量传递数值或地址不同就会产生JavaScr ...