java实现excel的导入和导出
2017-10-30 17:14
323 查看
在网上参考了很多文章,对于excel的导入导出大概看了下,详细的API没有仔细去看,只不过是实现了功能而已。这里贴上代码,一方面自己以后用得时候可以直接拿来用,另一方面有需要实现excel导入导出功能的,也可以大概看看本篇文章。
POI所需要的依赖,基本都包括了。
1,需要的依赖
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.14</version> </dependency>
POI所需要的依赖,基本都包括了。
2,excel导入
这部分实现起来比较简单。上传一个excel文件,最后生成一个List集合。当然前提是excel每列的内容还有数据格式是需要提前定义好的。/** * 通过导入excel文件,读出每个单元格的内容。 * InputStream来自于文件上传时的MultipartFile对象 */ @Override public List<Shipment> readXls(InputStream is,Integer userId,Integer prodId) throws IOException, InvalidFormatException { List<Shipment> shipments=new ArrayList<Shipment>(); HSSFWorkbook book = new HSSFWorkbook(is); HSSFSheet sheet = book.getSheetAt(0); /** * 通常第一行都是标题,所以从第二行开始读取数据 */ for(int i=1; i<sheet.getLastRowNum()+1; i++) { HSSFRow row = sheet.getRow(i); row.getCell(0).setCellType(Cell.CELL_TYPE_STRING); row.getCell(1).setCellType(Cell.CELL_TYPE_STRING); row.getCell(2).setCellType(Cell.CELL_TYPE_STRING); String uuid = row.getCell(0).getStringCellValue(); //名称 String dealerName = row.getCell(1).getStringCellValue(); //url String prodName = row.getCell(2).getStringCellValue(); Shipment shipment=new Shipment(); shipment.setUuid(uuid); shipment.setDealerName(dealerName); shipment.setProdName(prodName); shipment.setUserId(userId); shipment.setProdId(prodId); shipment.setCreated(new Date()); shipment.setUpdated(new Date()); shipments.add(shipment); } for (Shipment shipment : shipments) { System.err.println(shipment); } return shipments; }
3,excel导出
excel的导出是以下载的方式进行的。用户点击链接,弹出下载该excel的下载框,用户可以选择将该文件下载到指定位置。@RequestMapping("/{prodId}/downloadExcel") public void setUpExcel(HttpServletRequest request, HttpServletResponse response,@PathVariable Integer prodId) throws IOException{ String[] headers = { "数量", "时间"}; SysUser user = (SysUser) SecurityUtils.getSubject().getPrincipal(); List<DeviceActivePeriod> list=dService.monActiveDevices(30,user.getId(),prodId); List<StatisticsModel> datasList=dService.getActiveDevs(list); HSSFWorkbook workbook = new HSSFWorkbook(); HSSFSheet sheet = workbook.createSheet(); //设置列宽 sheet.setDefaultColumnWidth((short) 18); //创建第一行的对象,第一行一般用于填充标题内容。从第二行开始一般是数据 HSSFRow row = sheet.createRow(0); for (short i = 0; i < headers.length; i++) { //创建单元格,每行多少数据就创建多少个单元格 HSSFCell cell = row.createCell(i); HSSFRichTextString text = new HSSFRichTextString(headers[i]); //给单元格设置内容 cell.setCellValue(text); } //遍历集合,将每个集合元素对象的每个值填充到单元格中 for(int i=0;i<datasList.size();i++){ StatisticsModel statisticsModel=datasList.get(i); //从第二行开始填充数据 row = sheet.createRow(i+1); //该集合只记录数量和时间,这两个值来自statisticsModel。如果对象比较复杂,需要额外转换,比如Date类型的日期,int,float类型的数值 List<String> datas=new ArrayList<>(); String count=statisticsModel.getValue1().toString(); String time=statisticsModel.getTime(); datas.add(count); datas.add(time); for (int j=0;j<datas.size();j++) { String string=datas.get(j); HSSFCell cell = row.createCell(j); HSSFRichTextString richString = new HSSFRichTextString(string); HSSFFont font3 = workbook.createFont(); //定义Excel数据颜色,这里设置为蓝色 font3.setColor(HSSFColor.BLUE.index); richString.applyFont(font3); cell.setCellValue(richString); } } response.setContentType("application/octet-stream"); response.setHeader("Content-disposition", "attachment;filename="+"Devices.xls");//Excel文件名 try { response.flushBuffer(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } //将workbook中的内容写入输出流中 workbook.write(response.getOutputStream()); }
3.1 效果:
相关文章推荐
- Java实现excel数据导入和导出
- java Excel导入导出,基于XML的实现,easy-excel使用
- Java实现将Excel导入数据库和从数据库中导出为Excel
- java实现excel的导入导出(poi详解)
- java实现excel的导入导出(poi详解)
- java实现 Excel文件的导入导出(1)
- Java 使用jxl类库以流的方式实现Excel导入导出
- java通过jxls框架实现导入导出excel
- java Excel导入导出,基于XML的实现,easy-excel使用
- [转]java实现excel的导入导出(poi详解)
- java实现excel的导入导出(poi详解)
- java通过jxl.jar实现excel导入导出
- 基于POI的Excel导入导出(JAVA实现)
- java实现excel的导入导出(poi)
- JAVA实现数据库数据导入/导出到Excel(POI)
- java实现excel的导入导出(poi详解)
- JAVA实现Excel导入导出
- java实现excel的导入导出(poi详解)
- JAVA实现数据库数据导入/导出到Excel(POI技术)
- java实现excel与mysql的导入导出