excel数据导入ssm
来源:互联网 发布:mac预览怎么编辑pdf 编辑:程序博客网 时间:2024/06/13 02:22
java web项目导入excel数据,是实用频率非常高的功能,通过做了几个这样的功能之后,现将此功能总结出了,对于Excel表的结构,简单理解我觉得大体可以把它分成三部分(Sheet,Cell,Row),可以把这三部分理解为页,列,行,为了以后自己方便使用,也为大家实现此功能做一个参考.
1.导入对应的jar包
2.Excel读取工具类
package org.springmvc.util;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.ss.usermodel.Cell;import org.apache.poi.ss.usermodel.Row;import org.apache.poi.ss.usermodel.Sheet;import org.apache.poi.ss.usermodel.Workbook;import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.io.InputStream;import java.text.DecimalFormat;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.List;/** * Excel读取工具类 */public class ExcelUtil { private final static String excel2003L = ".xls"; private final static String excel2007U = ".xlsx"; //读取文件数据 public static List<List<Object>> getExcelList(InputStream is, String fileName) throws Exception{ List<List<Object>> list = new ArrayList<List<Object>>(); Workbook workbook = null; //验证文件格式 String suffix = fileName.substring(fileName.lastIndexOf(".")); if(suffix.equals(excel2003L)){ workbook = new HSSFWorkbook(is); }else if(suffix.equals(excel2007U)){ workbook = new XSSFWorkbook(is); } Sheet sheet = null; Row row = null; Cell cell = null; for(int i = 0 ; i < workbook.getNumberOfSheets();i++){ sheet = workbook.getSheetAt(i); if(sheet == null) continue; //遍历当前sheet中全部行 for(int j = sheet.getFirstRowNum();j < sheet.getLastRowNum();j++){ row = sheet.getRow(j); if(row == null) continue; //循环当前row中全部列 List<Object> li = new ArrayList<Object>(); for (int k = row.getFirstCellNum();k < row.getLastCellNum();k++){ cell = row.getCell(k); if(cell!=null){ li.add(getCellValue(cell)); } } list.add(li); } } return list; } //单元格数据类型格式化 public static Object getCellValue(Cell cell){ Object value = null; DecimalFormat decimalFormat1 = new DecimalFormat("0"); DecimalFormat decimalFormat2 = new DecimalFormat("0.00"); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd"); switch (cell.getCellType()){ case Cell.CELL_TYPE_NUMERIC: if("General".equals(cell.getCellStyle().getDataFormatString())){ value = decimalFormat1.format(cell.getNumericCellValue()); }else if("m/d/yy".equals(cell.getCellStyle().getDataFormatString())){ value = dateFormat.format(cell.getDateCellValue()); }else{ value = decimalFormat2.format(cell.getNumericCellValue()); } break; case Cell.CELL_TYPE_BOOLEAN: value = cell.getBooleanCellValue(); break; case Cell.CELL_TYPE_BLANK: value = ""; break; case Cell.CELL_TYPE_STRING: value = cell.getStringCellValue(); break; } return value; }}
3.Controller页面
//通过模态框显示批量添加页面@RequestMapping(value="/batchAdd",method=RequestMethod.GET)public String batchAdd(){return "blog/batchAdd";}//批量导入Excel数据到数据库@RequestMapping(value="/batchAdd",method=RequestMethod.POST)@ResponseBodypublic String batchAdd(MultipartHttpServletRequest multipartHttpServletRequest) throws IOException, Exception{int count = 0;//导入总条数MultipartFile file = multipartHttpServletRequest.getFile("uploadXls");List<List<Object>> list = ExcelUtil.getExcelList(file.getInputStream(), file.getOriginalFilename());count = list.size();//title,content,author,createtime,category_id,picfor (int i = 0; i < list.size(); i++) {List<Object> lo = list.get(i);Blog b = new Blog();b.setTitle(lo.get(0).toString());b.setContent(lo.get(1).toString());b.setAuthor(lo.get(2).toString());b.setIssueDate(new SimpleDateFormat("yyyy/MM/dd").parse(lo.get(3).toString()));Category c = new Category();c.setId(Integer.parseInt(lo.get(4).toString()));b.setCategory(c);b.setMypic(lo.get(5).toString());blogDao.insert(b);for(int j = 0;j<lo.size();j++){Object o = list.get(i).get(j);System.out.print(o+"\t\t");}System.out.println();}return String.format("数据导入成功!共计%s条", count);}
4.jsp页面
1.<button class="btn btn-warning" onclick="showDialog('#myModal','批量添加博客','blog/batchAdd')"><i class="glyphicon glyphicon-add"></i>批量导入</button><!--在form标签下添加一个属性,enctype="multipart/form-data"-->2.<form class="form" action="blog/batchAdd" method="post" enctype="multipart/form-data"> <input class="form-control" type="file" name="uploadXls" id="uploadXls"></form>function submitForm(){var $form = $modal.find('form');var action = $form.attr('action');//文件上传提交表单需要如下代码//FormData html5新添加的属性 ,可以支持文件上传//FormData 在ie8中不支持, jquery.form.js//new FormData(dom)//jquery-->dom $form.get(0); $form[0]//dom-->jquery $(dom)var form = new FormData($form.get(0));$.ajax({url:action,type:'post',data:form,async: false, cache: false, contentType: false, processData: false,success:function(data){$modal.modal('hide');bootstrapTable.bootstrapTable('refresh');}});}//批量添加function batchAdd(modal,url){}
阅读全文
0 0
- excel数据导入ssm
- ssm利用poi将excel数据导入数据库
- 基于SSM完成EXCEL表格数据导入到MySQL数据库
- SSM Excel表格导出导入
- SSM导出导入Excel表
- SSM+Maven+Bootstrap导入excel数据到数据库(支持XLSX,XLS格式)
- SSM数据库数据导出excel
- ssm往mysql中导入excel表格
- SSM框架+poi实现EXCEL导入
- EXCEL数据导入SQL
- DataGrid数据导入Excel
- DataGrid数据导入Excel
- DataGrid数据导入Excel
- DataGrid数据导入Excel
- EXCEL数据导入数据库
- EXCEL数据导入数据库
- EXCEL数据导入数据库
- excel导入、导出数据
- 自适应布局的折线图,柱状图以及天气预报折线图
- clisp和slime安装
- 请不要庆幸面试的简单
- Android 开发 对话框Dialog dismiss和hide方法的区别
- OPENGL学习笔记之五
- excel数据导入ssm
- codeforces567C. Geometric Progresmit(DP)
- 笔记14 | 图片倒影+渐变效果
- linux基础命令(三)man,find,grep
- Data Science完整学习路径Python版
- Comparison Between Cisco Nexus 7000 Series & Cisco Nexus 9500 Series Switches
- 关于DNF的多媒体包NPK文件的那些事儿(7)
- 面试题-海量数据处理问题
- Codeforces-191A-Dynasty Puzzles(简单dp)