springMVC导入excle poi
来源:互联网 发布:芈月 铭文 知乎 编辑:程序博客网 时间:2024/05/16 02:48
页面部分:
<form action="${path}/user/fileUploadOrders" method="post" enctype="multipart/form-data" onsubmit="return excelSubmit();">
<font>选择excel文档:</font>
<input type="file" name="file" id="fileUpload"> <button class="btn2" type="submit">导入订单详情</button>
</form>
controller:
/**
* 读取excel* @return
*/
@RequestMapping("/user/fileUploadOrders")
public String fileUploadOrders(@RequestParam("file") MultipartFile file,
HttpSession session) {
String url = "";
// 判断文件是否为空
if (!file.isEmpty()) {
String location = session.getServletContext().getRealPath("upload");
String str = file.getOriginalFilename().substring(
file.getOriginalFilename().indexOf("."),
file.getOriginalFilename().length());
// 文件绝对路径
url = location + "\\" + System.currentTimeMillis() + str;
// 文件类型不支持导入
if (!str.equals(".xlsx")) {
return "redirect:/users/toUserList?state=3";
}
try {
file.transferTo(new File(url));
excelService.startOrder(url);
} catch (IllegalStateException e) {
log.error("file transferto is error");
e.printStackTrace();
return "redirect:/users/toUserList?state=1";
} catch (IOException e) {
e.printStackTrace();
return "redirect:/users/toUserList?state=1";
} finally {
File f = new File(url);
if (f.isFile()) {
f.delete();
}
}
}// 重定向
return "redirect:/users/toUserList?state=2";
}
//业务逻辑部分:
service层没有封装excel解析的代码,直接放一起了,大家可以把它封装到一个工具类,注意解析的excel后缀格式为.xlsx
public void startOrder(String path){
FileInputStream in = null;
try {
XSSFWorkbook workbook;
in = new FileInputStream(path);
workbook = new XSSFWorkbook(in);
XSSFSheet sheet =workbook.getSheet("Sheet1");
//获取excel文件中所有行对象
int rows = sheet.getPhysicalNumberOfRows();
//遍历行,row-1 过滤掉标题行
StringBuffer pidBefore = new StringBuffer("mm_m_122582841_");
for(int i=0;i<rows-1;i++){
//读取左上断单元格
XSSFRow row = sheet.getRow(i+1);
//行不能为空
if(row != null){
//获取所有列
int cells = row.getPhysicalNumberOfCells();
String value = "";
//遍历列
for(int j=0;j<cells;j++){
//获取列的值
XSSFCell cell = row.getCell(j);
if(cell != null){
//第五列为时间格式,第三行为电话号码,其他为字符串
if(j==6||j==7||j==12||j==13||j==14||j==15||j==18||j==20){
BigDecimal bg =new BigDecimal(cell.getNumericCellValue());
String str = bg.toPlainString();
value+=str+",";
}
else{
value+=cell.getStringCellValue()+",";
}
}
}
String[] order = value.split(",");
OrderDetails details =new OrderDetails();
int status = 0;
details.setOrderId(order[24]);
details.setGoodsId(order[3]);
details.setGoodsTitle(order[2]);
details.setGoodsShop(order[4]);
details.setGoodsCount(Integer.parseInt(order[6]));
details.setGoodsPrice(new BigDecimal(order[7]));
int index = order[17].indexOf("%");
details.setGoodsRate(new BigDecimal(order[17].substring(0,index-1)));
index = order[10].indexOf("%");
details.setTotalRate(new BigDecimal(order[10].substring(0,index-1)));
details.setPayMoney(new BigDecimal(order[12]));
details.setTotalEarnMoney(new BigDecimal(new BigDecimal(order[13]).doubleValue()));
details.setMemberEarnMoney(new BigDecimal(new BigDecimal(order[12]).multiply(new BigDecimal(order[17].substring(0,index-1))).multiply(new BigDecimal(0.7)).doubleValue()));
details.setMediaId(Integer.parseInt(order[28]));
details.setSpreadId(order[29]);
try {
details.setCreateTime(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").parse(order[0]));
} catch (ParseException e) {
e.printStackTrace();
}
//查询UserID
String userId = profilesMapper.getUserID(pidBefore.append(order[26]).append("_").append(order[28]).toString());
if("付款订单".equals(order[8])){
status=1;
}
else if("订单成功".equals(order[8])){
status=2;
}
else if("订单结算".equals(order[8])){
status=3;
}
else if("订单失效".equals(order[8])){
status=4;
}
details.setOrderState(status);
details.setUserId(userId);
OrderDetails od = orderDetailsMapper.checkOrderIsExist(order[24]);
//有记录则更新记录,没有则插入
if(od != null){
orderDetailsMapper.updateOrderDeTails(details);
}else{
orderDetailsMapper.insertInToOrderDeTails(details);
}
pidBefore.delete(0,pidBefore.length());
pidBefore.append("mm_m_122582841_");
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
in.close();//关掉流,不然文档删除不掉
} catch (IOException e) {
e.printStackTrace();
}
}
}
- springMVC导入excle poi
- Apache POI 导入导出EXCLE
- SpringMVC文件上传 Excle文件 Poi解析 验证 去重 并批量导入 MYSQL数据
- SpringMVC文件上传 Excle文件 Poi解析并批量导入 MYSQL数据库
- POI解决EXCLE导入03,07兼容性问题
- SpringMVC 实现POI读取Excle文件中数据导入数据库(上传)、导出数据库中数据到Excle文件中(下载)
- springMVC+poi导入excel
- poi(excle)
- maven+springmvc+POI导入Excel
- SpringMVC+MyBatis+POI导入Excel
- 导入Excle
- Excle导入
- Java +EasyUI+SpringMvc实现Excle导入导出(上)
- Java +EasyUI+SpringMvc实现Excle导入导出(下)
- Java Poi 操作Excle
- poi读Excle
- POI导出Excle HSSF
- poi读取excle文件
- C# 实现Winform全屏后不遮挡任务栏,显示任务栏
- sping+springmvc+mybatis+shiro,配置文件
- js 获取字符串某字符首次出现的位置
- Redis之——Redis集群的扩展与测试
- 线段树
- springMVC导入excle poi
- nginx upstream failover 容错机制
- 腾讯课堂的物理实验(这个实验并没有好好想)
- [Struts2]Struts2的文件上传
- linux(二)文件搜索命令
- 并行区域
- 表达式,水仙花练习
- tomcat的bin目录中catalina与startup的关系
- hdoj 1033Edge(考验英文功底)