记录-java(jxl) Excel导入数据库
本内容主要包括(文件上传、excel2003数据导入数据库)excel导入数据库功能需要jxl jar包支持
下面是文件上传的前端测试代码
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="getAllByExcel" method="post" enctype="multipart/form-data">
<input type="file" name="file" >
<input type="submit" value="上传">
</form>
</body>
</html>
下面控制类用于excel文件上传到服务器
@SuppressWarnings("unchecked")
@RequestMapping(value="getAllByExcel" ,method = RequestMethod.POST)
public Object getAllByExcel(HttpServletRequest request,HttpServletResponse response, ModelMap model){
MultipartHttpServletRequest mulltipartRequest=(MultipartHttpServletRequest)request;
MultipartFile files=mulltipartRequest.getFile("file");
//得到上传服务器路径
String path=request.getSession().getServletContext().getRealPath("/WEB-INF/res/upload");
String fileName=files.getOriginalFilename();
try {
InputStream inputStream=files.getInputStream();
byte[] b = new byte[1048576];
int length = inputStream.read(b);
path += "\\" + fileName;
// 文件流写到服务器端
FileOutputStream outputStream = new FileOutputStream(path);
outputStream.write(b, 0, length);
inputStream.close();
outputStream.close();
//解析excel
List<Map<String, Object>> lists=CommonUtil.getAllExcel(path);
此功能需要导入jxl相关jar包,此方法提供excel路径返回List<Map<String, Object>>
//获取excel数据
public static List<Map<String, Object>> getAllExcel(String url){
List<Map<String, Object>> models=new ArrayList<Map<String, Object>>();
try { File filse=new File(url);
Workbook rwb=Workbook.getWorkbook(filse);
Sheet sheet=rwb.getSheet(0);
int clos=sheet.getColumns(); //获取列数
int rows=sheet.getRows();//获取行数 String[] heads =new String[clos];//保存所有的key值 for (int i = 0; i < rows; i++) {
Map<String, Object> mp =new HashMap<String,Object>();
for(int j=0;j<clos;j++){
if(i == 0 ){
heads[j] = sheet.getCell(j, i).getContents();//获取所有key值
}
else{
mp.put(heads[j], sheet.getCell(j, i).getContents());//获取每行value值
}
}
//如果map不为空则添加到list集合
if (!mp.isEmpty()) {
models.add(mp);
} }
} catch (Exception e) {
// TODO: handle exception
}
return models;
}
附加poi excel导入 (存在点问题 和上面思路类似 此处只是做个记录)
public static List<Map<String, Object>> readExcel(String url) throws IOException{
InputStream is=new FileInputStream(url);
HSSFWorkbook hssfWorkbook = new HSSFWorkbook(is);
List<Map<String, Object>> models=new ArrayList<Map<String, Object>>();
//循环Sheet
for (int numSheet = 0; numSheet < hssfWorkbook.getNumberOfSheets(); numSheet++) {
HSSFSheet sheet=hssfWorkbook.getSheetAt(numSheet);
if(sheet==null){
continue;
}
HSSFSheet sheet=hssfWorkbook.getSheetAt(0);
int celNums=sheet.getRow(0).getPhysicalNumberOfCells();
String[] heads =new String[celNums];//保存所有的key值
for (int rowNum = 0; rowNum < sheet.getPhysicalNumberOfRows(); rowNum++) {
HSSFRow Row = sheet.getRow(rowNum);
Map<String, Object> mp =new HashMap<String,Object>();
for (int celNum = 0; celNum < celNums; celNum++) {
if(rowNum == 0 ){
heads[celNum] = Row.getCell(celNum).getStringCellValue();//获取所有key值
}
else{
mp.put(heads[celNum], Row.getCell(celNum).getStringCellValue());//获取每行value值
}
}
if (!mp.isEmpty()) {
models.add(mp);
}
}
}
return models;
}
记录-java(jxl) Excel导入数据库的更多相关文章
- java jxl excel 导入导出的 总结(建立超链接,以及目录sheet的索引)
最近项目要一个批量导出功能,而且要生成一个单独的sheet页,最后后面所有sheet的索引,并且可以点击进入连接.网上搜索了一下,找到一个方法,同时把相关的excel导入导出操作记录一下!以便以后使用 ...
- Hibernate+jxl+excel导入数据库
在将excel中的10w行数据导入数据库中时,总发生内存溢出,一开始使用的Spring+Hibernate;不知如何使用批处理,后来只是用Hibernate,10W行数据几分钟完成, 代码如下: pu ...
- Java实现Excel导入数据库,数据库中的数据导入到Excel
private static void executeMethod(JobExecutionContext arg0) throws Exception{ try { TContrastService ...
- Java实现将Excel导入数据库和从数据库中导出为Excel
实现的功能: 用Java实现从Excel导入数据库,如果存在就更新 将数据库中的数据导出为Excel 1.添加jxl.jar mysql-connector-java.1.7-bin.jar包到项目的 ...
- JAVA实现Excel导入/导出【转】
JAVA实现Excel导入/导出[转] POI的下载与安装 请到网站http://www.apache.org/dyn/closer.cgi/poi/右击超链接2.5.1.zip下载压缩包poi-bi ...
- excel 导入数据库 / SSIS 中 excel data source --64位excel 版本不支持-- solution
当本地安装的excel(2013版) 是64-bit时:出现的以下两种错误 解决: 1. excel 导入数据库 , 如果文件是2007则会出现:“The 'Microsoft.ACE.OLEDB.1 ...
- ASP.NET 将Excel导入数据库
将Excel导入数据库大致流程: Excel数据->DataSet->数据库 需要做的准备:1.FileUpload控件一个,按钮一个,如果需要即时显示那么GridView或DataGr ...
- Excel导入数据库百万级数据瞬间插入
Excel导入数据库百万级数据瞬间插入 百万级别,瞬间,有点吊哇
- Java中Excel导入功能实现、excel导入公共方法_POI -
这是一个思路希望能帮助到大家:如果大家有更好的解决方法希望分享出来 公司导入是这样做的 每个到导入的地方 @Override public List<DataImportMessage> ...
随机推荐
- cocos2d-x 重力感应 加速器的使用
CSDN开通已有两三年,今天作为一名刚入行的菜鸟写下自己的第一篇Blog. 刚好项目中须要用到重力感应,google下发现重力感应的使用很easy. 例如以下: 第一步: 在当前层开启重力感应.函数: ...
- GDB基本命令(整合)(转)
directory:添加源文件目录 l src.cpp:line_num可进入文件 如:l src.cpp:10 回车自动重复上一命令 一.gdb调试基本知识a.调试器指示的是将要执行的代码行b.只有 ...
- sql中update,alter,modify,delete,drop的区别和使用(整理)
关于update和alter: 百度知道上关于update和alter有一个很形象的总结: 一个表有很多字段,一个字段里有很多数据. 一个家有很多房间,一个房间里有很多家具. update是用来将衣柜 ...
- ibatis中<![CDATA[使用解释
http://hi.baidu.com/taoxincheng0/blog/item/3916c4ec413f03c22e2e2160.html ibatis中什么时候需要用到: <![CDAT ...
- IDEA 找不到maven编译命令操作
找到idea左上角菜单View>Tool Windows>Maven projects.
- [UIDevice currentDevice].model
iPhone Simulator iPad Simulator iPod touch iPad iPhone
- MTU的概念,什么是路径MTU? MTU发现机制,TraceRoute(了解)
1.MTU的概念 MTU即Maximum Transmission Unit 最大传输单元.它是指一种通信协议的某一层上面所能通过的最大数据包大小(以字节为单位). 2.路径MTU ...
- js - 模块化开发的兼容exports的套路
补充:除了第一种的套路,还可以这样使用第二种.都是用来自执行函数的.第二种的好处是,还可以返回一个true. // 常用 ;(function () {})(); // 小技巧(如果不加上!会报错,加 ...
- Java 8 Lambda表达式介绍
Lambda是什么? Lambda是一个匿名函数,我们可以把Lambda理解为是一段可以传递的代码.可以写出简洁.灵活的代码.作为一种更紧凑的代码风格,使java的语言表达能力得到提升. 可以这么说l ...
- 文件打开的过程——调用fd=open()时操作系统所做的工作
fd=fopen()是一个系统调用.用于依据文件名称打开一个文件.返回该文件的文件描写叙述符,文件打开后进程便能够依据文件描写叙述符fd进行其它操作,比方读,写,关闭等操作. 各个操作系统打开文件的过 ...