记录-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> ...
随机推荐
- A.0 B.1 C.2 D.3
17. 以下哪个不是广告平台? A.Admob B.Domob C.InMobi D.TalkingData 错误 应该选择:D.TalkingData 10. 哪个不是免费的工具? A.Xcode ...
- Android-LinearLayout布局技巧(一)
先看2张图 一.5.1寸 二.3.7寸 三.代码 <?xml version="1.0" encoding="utf-8"?> <Linear ...
- HTTP请求报文属性详解
HTTP请求报文组成:请求行+请求头+请求体 注意:请求体和URL都可以传递请求参数. 常见请求头属性: 1.Accept 作用:浏览器客户端用来告诉服务端能接受什么类型的响应. 例如: Acce ...
- TensorFlow学习笔记 速记2 报错:failed call to cuDevicePrimaryCtxRetain: CUDA_ERROR_INVALID_DEVICE
版本: tensorflow-gpu 原因: 在创建session时没有使用我想让它用的gpu 解决方案: 1. 在python程序中: import os os.environ["CUDA ...
- atitit.线程死锁 卡住无反应 的原因in cmd调用的解决方案 v3 q39
atitit.线程死锁 卡住无反应 的原因in cmd调用的解决方案 v3 q39 1. 问题::线程死锁 卡住无反应1 1.1. 分类:: cmd调用, net io , file io ...
- RabbitMQ(一):Windows下RabbitMQ安装
1.Windows下安装RabbitMQ需要以下几个步骤 (1):下载erlang,原因在于RabbitMQ服务端代码是使用并发式语言erlang编写的,下载地址:http://www.erlang. ...
- Android startActivity()和onActivityResult()使用总结(转载)
有三个Activity: A.java ,B.java ,C.java Activity之间的跳转常用方法: 1. startActivity(Intent intent); 该方法只用于启动新的Ac ...
- PHP : ActiveRecord实现示例
先简单介绍一下Active Record: Active Record(中文名:活动记录)是一种领域模型模式,特点是一个模型类对应关系型数据库中的一个表,而模型类的一个实例对应表中的一行记录.Acti ...
- [浪风推荐]CURL伪造IP和来源
给“刷票”的朋友提供了很好的换IP的方案,查了下,CURL确实很强悍的可以伪造IP和来源. 1.php 请求 2.php . 1.php代码: $ch = curl_init(); curl_seto ...
- Android Otto框架浅析
今天要介绍的是一个Android中使用得比較多的android 事件总线 EventBus模式的一个框架Otto. Otto 官网:http://square.github.io/otto/ 一.An ...