JXL解析Excel表格内容到数据库
java中常用的解析Excel表格的工具一种是POI一种是JXL,POI功能强大,相比JXL稍嫌复杂,对表格样式的处理非常好;而JXL解析简单方便,对中文支持比较好。
工作中解析Excel内容上传到数据库常用JXL,而从数据库导出数据到Excel常用POI
下面是一个JXL解析Excel的一个简单案例
1.添加jxl的架包
下载地址:jxl.zip
2.解析Excel表格内容到一个集合
/**
* 解析Excel表格
* @param ExcelURI 表格文件的路径
* @return 表格内容的集合
*/
public static List<List<String>> readExcel(String ExcelURI){
//用于存放所有的行
List<List<String>> list=new ArrayList<List<String>>();
Workbook book = null;
try {
// 读取现有的工作薄
book = Workbook.getWorkbook(new File(ExcelURI));
// 获取工作薄中所有的表对象
Sheet[] sheets = book.getSheets();
for (int i = 0; i < sheets.length; i++) {
//获取表当前表中的总行数
int rowSum=sheets[i].getRows();
for (int j = 0; j < rowSum; j++) {//如果不想读取表格第一行就把j的初始值设置为1
//获取当前行所有单元格对象
Cell[] rowCells=sheets[i].getRow(j);
//用于存放当前行中所有的单元格内容
List<String> strs=new ArrayList<String>();
for (int k = 0; k < rowCells.length; k++) {//如果不想读取表格第一列就把k的初始值设置为1
//获取当前单元格对象
CellType ct=rowCells[k].getType();
String content=null;
if (ct.equals(CellType.DATE)) {
//日期 类型的处理 ,如果不处理的话,读取的时候表格中的2014-03-25 会读取成14-03-25
DateCell dc = (DateCell) rowCells[k];
Date jxlDate = dc.getDate();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
content=sdf.format(jxlDate);
}else{
//不是日期类型的一律当做字符串处理
content=rowCells[k].getContents();
}
strs.add(content.trim());
}
list.add(strs);
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
book.close();
}
return list;
}
3.批量插入集合数据到数据库
/**
* 批量插入集合数据到数据库
* @param sql 要执行的sql插入语句
* @param list Excel文件内容集合
* @return 插入是否成功
*/
public boolean insertBatch(String sql,List<List<String>> list) {
Connection conn=super.getConnection();
PreparedStatement pstmt=null;
boolean mark=true;
try {
pstmt=conn.prepareStatement(sql);
// 关闭JDBC自动执行事务处理
conn.setAutoCommit(false);
// 一个list代表一行,每行中都有一个参数集合list
for (int i = 0; i < list.size(); i++) {
List<String> cells=list.get(i);
for (int j = 0; j <cells.size(); j++) {
pstmt.setString(j+1,cells.get(j));
}
pstmt.addBatch();
}
pstmt.executeBatch();
//命令执行完了就手动提交事务
conn.commit();
//清空此 Statement 对象的当前 SQL 命令列表。
pstmt.clearBatch();
} catch (SQLException e) {
try {
conn.rollback();
mark=false;
} catch (SQLException e1) {
e1.printStackTrace();
}
}finally{
super.closeAll(null, pstmt, conn);
}
return mark;
}
使用executeBatch能够大大提高插入的效率
注意点:1、注意解析表格的时候要明确表格的哪些行、哪些列是不需要放到集合中的
2、注意表格中单元格的内容长度和数据库中字段的长度是否相符,如果数据库中字段长度比较小会出现java.sql.DataTruncation: Data truncation异常
3、单个Excel表格中的内容不要太多,保持在5M以内
本文章出自:腾飞工作室 转载请注明出处
JXL解析Excel表格内容到数据库的更多相关文章
- java中使用jxl导出Excel表格详细通用步骤
该方法一般接收两个参数,response和要导出的表格内容的list. 一般我们将数据库的数据查询出来在页面进行展示,根据用户需求,可能需要对页面数据进行导出. 此时只要将展示之前查询所得的数据放入s ...
- 使用PHPExcel解析Excel表格
安装类库 从GitHub上下载PHPExcel类库 地址:https://github.com/PHPOffice/PHPExcel 解压后将Classes文件夹移动到ThinkPHP的extend目 ...
- C# 读取Excel表格内容,以及NPOI的使用
在实际的开发中,我们可能需要读写word或者Excel的内容,在我开发的项目中,需要读取Excel的内容,并将相对应的内容存储到数据库中,这里简单跟大家分享一下,希望能够帮助一些人. 我相信在读写wo ...
- php网址显示excel表格内容
/** * excel表格内容在网页中显示 * * 首先需要下载PHPExcel 工具包 * 网址: http://phpexcel.codeplex.com/releases/view/119187 ...
- Java:JXL解析Excel文件
项目中,有需求要使用JXL解析Excel文件. 解析Excel文件 我们先要将文件转化为数据流inputStream. 当inputStream很大的时候 会造成Java虚拟器内存不够 抛出内存溢出 ...
- jxl解析excel时,处理中文乱码问题
jxl解析excel时,处理中文乱码问题 一般出现较多的问题是,当exce中包含了中文或特殊字符时,在解析时候就会出现乱码现象. 解决方法为: InputStream in = new FileInp ...
- 跨平台信息获取小工具第三版本(增加了继承、多线程、异常处理模块、excel表格内容剔除空格)
# coding=utf-8 import threadingimport paramikoimport osimport timeimport xlrdimport xlwtimport openp ...
- 用jxl解析excel内容
需要导入jxl.jar 下方表格为excel中内容: 序号 姓名 性别 生日 地址 1 测试1 男 1990-1-1 北京朝阳区 2 测试2 女 1998-2-2 北京海淀 3 测试3 男 1999- ...
- JXL包大解析;Java程序生成excel文件和解析excel文件内容
最近需求变化,需要把excel导入 我以前没有做过,所以我查了一些资料 和参考别人的代码 以下是多种方式: import java.io.File; import java.io.FileInputS ...
随机推荐
- 浏览器内核-Webkit
关键字:浏览器内核,浏览器引擎,Browser,Webkit,Blink,Chromium. 本文简单介绍一下各种浏览器内核.着种介绍一下Webkit.顾名思义,浏览器内核就是浏览器的核心部分,也可以 ...
- c# 模拟表单提交,post form 上传文件、大数据内容
表单提交协议规定:要先将 HTTP 要求的 Content-Type 设为 multipart/form-data,而且要设定一个 boundary 参数,这个参数是由应用程序自行产生,它会用来识别每 ...
- iOS 开发一年总结
收获很多 1. 一个人包办从构思, 设计, 实现, 推广的全过程, 对自己的能力, 特别是能力范围有很大的提升. 以前在公司上班仅仅局限在实现的局域内, 现在在做自己的产品时, 在设计时的取舍, 对工 ...
- Ubuntu 设置root用户登录
由于 Ubuntu 是基于 Debian 的 linux 操作系统,在默认的情况下,是没有超级用户(superuser, root)的,但有些系统操作必须有超级用户的权限才能进行,如手动释放内存等. ...
- Mapped Statements collection does not contain value for TaskMapper.selectByPrimaryKey
Mapped Statements collection does not contain value for后面是什么类什么方法之类的: 错误原因有几种: 1.mapper.xml中没有加入name ...
- UIApplication深入研究
我们偶尔会调用这个类的api来实现一些功能,但是这个类是iOS编程中很重要的一个概念,所以总结以下这个类的信息,不对的地方请留言. UIApplication的核心作用是提供了iOS程序运行期间的控制 ...
- Real-Time Rendering 3 彩图
电子版只有黑白图,彩图见官网链接:http://www.realtimerendering.com/book.html.虽然只有部分彩图,不过够用了,下面是其中几幅图,如果只能看黑白的,那得多蛋疼:
- 4.4 spring-自定义标签的解析
1.0 自定义标签的解析. 在之前的章节中,我们完成了对spring 默认标签的加载过程.那么现在我们将开始新的里程, spring 自定义标签的解析; 代码如下: /** * Parse the e ...
- WEB开发者必备的7个JavaScript函数
防止高频调用的debounce函数 这个 debounce 函数对于那些执行事件驱动的任务来说是必不可少的提高性能的函数.如果你在使用scroll, resize, key*等事件触发执行任务时不使用 ...
- The 9th Zhejiang Provincial Collegiate Programming Contest->Problem :K-Yet Another Story of Rock-pap
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3610 题意:一对恋人受到fff团惩罚,需要比剪刀石头布,谁输谁死,出一样都 ...