Spring MVC Excel的导入和导出
来源:互联网 发布:淘宝直通车的作用 编辑:程序博客网 时间:2024/05/24 05:15
1、EXCEL的导入
需要使用包:
1.1、Action
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)@ResponseBodypublic void importExcel(@ModelAttribute("javaBeanName") JavaBeanName m, @RequestParam("file") MultipartFile file) { try { attachmentService.saveAttachmentImport(file); } catch (Exception e) { e.printStackTrace(); //作其他异常处理(友好提示,根据框架来选择) } //可返回页面或是json数据提示导入成功}
1.2、serviceImpl
1.2.1
@Overridepublic void saveImport(MultipartFile file) throws IOException {//获取excel中数据,如1.2.2 List<List<Object>> list = this.getExcelData(file); //1、转换excel的值 for (int i = 0; i < list.size(); i++) { List<Object> lo = list.get(i); JavaBeanName javaBeanName = new JavaBeanName(); javaBeanName.setFileName(String.valueOf(lo.get(0))); javaBeanName.setFileExtension(String.valueOf(lo.get(1))); //用来测试 System.out.println("导入信息" + i + "-->文件名称:" + javaBeanName.getFileName() + " 类型:" + javaBeanName.getFileExtension()); } //2、校验,返回错误信息 // 3、保存到数据库}
1.2.2
/** * 获取excel中的数据 * * @param file * @return * @throws IOException */private List<List<Object>> getExcelData(MultipartFile file) throws IOException { InputStream in = file.getInputStream(); Workbook work = new HSSFWorkbook(in); List<List<Object>> list = new ArrayList<List<Object>>(); ; Sheet sheet = null; Row row = null; Cell cell = null; //遍历Excel中所有的sheet for (int i = 0; i < work.getNumberOfSheets(); i++) { sheet = work.getSheetAt(i); if (sheet == null) { continue; } //遍历当前sheet中的所有行,可以控制从第几行开始获取值 for (int j = sheet.getFirstRowNum(); j < sheet.getLastRowNum() + 1; j++) { row = sheet.getRow(j); //||row.getFirstCellNum()==j if (row == null) { continue; } //遍历所有的列 List<Object> li = new ArrayList<Object>(); for (int y = row.getFirstCellNum(); y < row.getLastCellNum(); y++) { cell = row.getCell(y);//转换excel中数据格式,如1.2.3 li.add(this.getCellValue(cell)); } list.add(li); } } work.close(); in.close(); return list;}
1.2.3
/** * 转换excel中数据格式 * * @param cell * @return */private Object getCellValue(Cell cell) { Object value = null; DecimalFormat df = new DecimalFormat("0"); //格式化number String字符 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); //日期格式化 DecimalFormat df2 = new DecimalFormat("0.00"); //格式化数字 switch (cell.getCellType()) { case Cell.CELL_TYPE_STRING: value = cell.getRichStringCellValue().getString(); break; case Cell.CELL_TYPE_NUMERIC: if ("General".equals(cell.getCellStyle().getDataFormatString())) { value = df.format(cell.getNumericCellValue()); } else if ("m/d/yy".equals(cell.getCellStyle().getDataFormatString())) { value = sdf.format(cell.getDateCellValue()); } else { value = df2.format(cell.getNumericCellValue()); } break; case Cell.CELL_TYPE_BOOLEAN: value = cell.getBooleanCellValue(); break; case Cell.CELL_TYPE_BLANK: value = ""; break; default: break; } return value;}
2、EXCEL导出
2.1、Action
/** * excel导出 * @param m * @return */@RequestMapping(value = "/exportExcel", method = RequestMethod.POST)@ResponseBodypublic void exportExcel(@ModelAttribute("JavaBeanName") JavaBeanName m, HttpServletResponse response) { try { OutputStream os = null; HSSFWorkbook hssfWorkbook= javaBeanNameService.getExportExcel(); os = response.getOutputStream(); response.reset(); //设置导出的文件名 response.setHeader("Content-disposition", "attachment; filename = " + URLEncoder.encode("附件信息.xls", "UTF-8")); response.setContentType("application/octet-streem"); hssfWorkbook.write(os); } catch (Exception e) { e.printStackTrace(); //处理异常信息 }}
2.2、封装EXCEL数据
/** * 封装excel数据 * @return */ @Override public HSSFWorkbook getExportExcel() { HSSFWorkbook book = new HSSFWorkbook(); //设置工作表名称 HSSFSheet sheet = book.createSheet("Sheet1"); sheet.autoSizeColumn(1, true);//自适应列宽度 //样式设置 HSSFCellStyle style = book.createCellStyle(); //颜色 style.setFillForegroundColor(HSSFColor.SKY_BLUE.index); style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); style.setBorderBottom(HSSFCellStyle.BORDER_THIN); style.setBorderLeft(HSSFCellStyle.BORDER_THIN); style.setBorderRight(HSSFCellStyle.BORDER_THIN); style.setBorderTop(HSSFCellStyle.BORDER_THIN); style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 生成一个字体 HSSFFont font = book.createFont(); font.setColor(HSSFColor.VIOLET.index); font.setFontHeightInPoints((short) 12); font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); // 把字体应用到当前的样式 style.setFont(font); HSSFCellStyle style2 = book.createCellStyle(); style2.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); //设置上下左右边框 style2.setBorderBottom(HSSFCellStyle.BORDER_THIN); style2.setBorderLeft(HSSFCellStyle.BORDER_THIN); style2.setBorderRight(HSSFCellStyle.BORDER_THIN); style2.setBorderTop(HSSFCellStyle.BORDER_THIN); style2.setAlignment(HSSFCellStyle.ALIGN_CENTER); //TODO 正式使用时从数据库中获取数据 List<JavaBeanName> list=new ArrayList<JavaBeanName>(); JavaBeanName javaBeanName1=new JavaBeanName(); javaBeanName1.setFileName("文件名称1"); javaBeanName1.setFileExtension("文件类型1"); javaBeanName1.setUpdateTime(new Date()); list.add(javaBeanName1); JavaBeanName javaBeanName2=new JavaBeanName(); javaBeanName2.setFileName("文件名称2"); javaBeanName2.setFileExtension("文件类型2"); javaBeanName2.setUpdateTime(new Date()); list.add(javaBeanName2); //填充表头标题 int colSize = list.size(); System.out.println("size:" + colSize); //合并单元格供标题使用(表名) sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 10)); HSSFRow firstRow = sheet.createRow(0);//第几行(从0开始) HSSFCell firstCell = firstRow.createCell(0); firstCell.setCellValue("附件信息表"); firstCell.setCellStyle(style); //填充表头header HSSFRow row = sheet.createRow(1); HSSFCell cell = row.createCell(0); cell.setCellValue("附件名称"); cell.setCellStyle(style2); HSSFCell cell2 = row.createCell(1); cell2.setCellValue("附件类型"); cell2.setCellStyle(style2); HSSFCell cell3= row.createCell(2); cell3.setCellValue("上传时间"); cell3.setCellStyle(style2); //填充表格内容 System.out.println("list:" + list.size()); for(int i=0; i<list.size(); i++) { HSSFRow row2 = sheet.createRow(i+2);//index:第几行 for(int j=0;j<3;j++) { HSSFCell cell4 = row2.createCell(j);//第几列:从0开始 if(j==0) { cell4.setCellValue(list.get(i).getFileName()); cell4.setCellStyle(style2); } if(j==1) { cell4.setCellValue(list.get(i).getFileExtension()); cell4.setCellStyle(style2); } if(j==3) { cell4.setCellValue(list.get(i).getUpdateTime()); cell4.setCellStyle(style2); } } } return book;}
3、JSP页面
<form:form id="form" cssClass="form" commandName="m" action="${ctx}/xxx/xxxAction/add" acceptCharset="multipart/form-data" method="post"> <table align="center"> <tr> <td>导入文件</td> <td> <input name="file" id="file" class="easyui-filebox" data-options="prompt:'文件上传',buttonText:'选择文件'" /> </td> </tr> <tr> <td></td> <td> <input type="button" value="导入" onclick="importFile()"/></td> <td> <input type="button" value="导出" onclick="exportExcel()"/></td> </tr> </table></form:form><script type="text/javascript"> /** * 导入 * @returns {boolean} */ function importFile(){ var formData = new FormData($('#form')[0]); var file = formData.get("file"); if (file.size == 0) { $.messager.alert("请选择文件!"); return false; } $.ajaxform({ url: ctx + "/xxx/xxxAction/importExcel", data: formData, processData: false,//不处理发送的数据 contentType: false,//不要设置Content-Type请求头 success: function (responseStr) { if (responseStr.code == "0") { $.messager.alert(responseStr.message); $grid.datagrid("reload"); } else { $.messager.alert(responseStr.message); } } }); } /** * 导出 */ function exportExcel() { var form = $("<form>"); //定义一个form表单 form.attr('style', 'display:none'); //在form表单中添加查询参数 form.attr('target', ''); form.attr('method', 'post'); form.attr('action', ctx + "/xxx/xxxAction/exportExcel"); $('body').append(form); //将表单放置在web中 form.submit(); }</script>
阅读全文
0 0
- Spring MVC Excel的导入和导出
- Excel 的导入导出 Spring MVC和 strtus2 区别
- excel的导入和导出
- Spring结合EasyUI导入和导出excel
- spring mvc 导出excel
- spring MVC 导出excel
- spring MVC 导出excel
- spring MVC 导出excel
- spring MVC 导出excel
- spring MVC 导出excel
- spring MVC 导出excel
- spring mvc 导出Excel
- Spring MVC 导出EXCEL
- Spring MVC下 Excel 导入导出(poi)
- spring mvc导入excel
- Spring MVC环境下用poi技术实现Excel的导入导出
- Spring MVC环境下用poi技术实现Excel的导入导出
- 基于Spring的Excel导入导出实例
- TeX Live & TeXstudio 安装手记
- xcrun: error: unable to find utility "PackageApplication", not a developer tool or in PATH
- 1001. 害死人不偿命的(3n+1)猜想 (15)
- [linux]:linux文件系统简单介绍
- Android MD5加密字符串
- Spring MVC Excel的导入和导出
- 接收Date类型参数格式的问题
- 日期选取器、单滚轮选取器、多滚轮选取器、滚轮内容根据环境变化、自定义选取器创建一个简单游戏( 抽奖机 )
- 中国人工智能大会报告现场速记-基本情况(一)
- Android 反编译apk 语句
- Kafka无消息丢失配置
- Java中面向对象分拣存储
- 自定义view实现流式布局
- PenTbox工具学习入门