博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
excel带图片导入(POI)
阅读量:5939 次
发布时间:2019-06-19

本文共 4061 字,大约阅读时间需要 13 分钟。

hot3.png

/**     * excel导入     *     * @param file     * @return     */    @Transactional    @Override    public String importInstallManageExcel(FileItem file) {        try {            //服务器地址            String uploadRoot = "D:/";            //上传的目录            String uploadSubDir = "pic";            //图片对应的行和图片数据            Map
sheetIndexPicMap = new HashMap
(); //图片对应的行和存放路径 Map
path = new HashMap
(); Sheet sheet; if (file.getName().substring(file.getName().length() - 4).equals("xlsx")) { XSSFWorkbook workBook = new XSSFWorkbook(file.getInputStream()); sheet = workBook.getSheetAt(0); //读取sheet的图片放入Map for (POIXMLDocumentPart dr : ((XSSFSheet) sheet).getRelations()) { if (dr instanceof XSSFDrawing) { XSSFDrawing drawing = (XSSFDrawing) dr; List
shapes = drawing.getShapes(); for (XSSFShape shape : shapes) { XSSFPicture pic = (XSSFPicture) shape; XSSFClientAnchor anchor = pic.getPreferredSize(); CTMarker ctMarker = anchor.getFrom(); sheetIndexPicMap.put(ctMarker.getRow(), pic.getPictureData()); //获取图片格式 String ext = pic.getPictureData().suggestFileExtension(); //保存的文件名 String fileName = UUID.randomUUID().toString() + "." + ext; path.put(ctMarker.getRow(), uploadSubDir + "/" + fileName); } } } } else { HSSFWorkbook workBook = new HSSFWorkbook(file.getInputStream()); sheet = workBook.getSheetAt(0); //读取sheet的图片放入Map List
pictures = workBook.getAllPictures(); if (pictures.size() != 0) { for (HSSFShape shape : ((HSSFSheet) sheet).getDrawingPatriarch().getChildren()) { HSSFClientAnchor anchor = (HSSFClientAnchor) shape.getAnchor(); if (shape instanceof HSSFPicture) { HSSFPicture pic = (HSSFPicture) shape; int pictureIndex = pic.getPictureIndex() - 1; HSSFPictureData picData = pictures.get(pictureIndex); sheetIndexPicMap.put(anchor.getRow1(), picData); //获取图片格式 String ext = picData.suggestFileExtension(); //保存的文件名 String fileName = UUID.randomUUID().toString() + "." + ext; path.put(anchor.getRow1(), uploadSubDir + "/" + fileName); } } } } if (sheet.getLastRowNum() == 0) { logger.error("表中无数据!"); return "表中无数据!"; } //定义数据集合存放excel所有数据 List
installManageList = new ArrayList
(); for (int i = 1; i <= sheet.getLastRowNum(); i++) { //错误提示消息 StringBuffer msg = new StringBuffer(); Row row = sheet.getRow(i); if (null == row) continue; LockWorker im = new LockWorker(); im.setInstallerPicture(path.get(i)); for (int j = 1; j < 12; j++) { Cell cell = row.getCell(j); String value = null; if (null != cell) { //全部作为文本处理 cell.setCellType(HSSFCell.CELL_TYPE_STRING); value = cell.getStringCellValue(); } if (1 == j) {//姓名 if (StringUtils.isNotBlank(value)){ im.setInstallerName(value); }else { msg.append("请填写姓名!\n"); } } else if (2 == j) {//备注 im.setRemark(value); } } if (!StringUtils.isBlank(msg.toString())) { logger.error("第\t" + i + "行: " + msg.toString()); return "第\t" + i + "行: " + msg.toString(); } installManageList.add(im); } if (!installManageList.isEmpty()) { if (!sheetIndexPicMap.isEmpty()) { for (Map.Entry
map : sheetIndexPicMap.entrySet()) { // 获取图片流 PictureData pic = map.getValue(); byte[] data = pic.getData(); //输出全路径 String outPath = uploadRoot + path.get(map.getKey()); FileOutputStream out = new FileOutputStream(outPath); out.write(data); out.close(); } } //批量保存 installerManageMapper.batchInsert(installManageList); } } catch (Exception e) { logger.error("导入异常", e); return "系统异常"; } return "success"; }

 

转载于:https://my.oschina.net/u/3445245/blog/1786399

你可能感兴趣的文章
qmail+spamassassin启用spf过滤
查看>>
Oracle PL/SQL Developer集成TFS进行团队脚本文件版本管理
查看>>
自动调整速率的Actor设计模式
查看>>
clouderamanager-server启动,log日志中说需要mysql驱动的解决办法
查看>>
LINQ技术、EF技术都出来蛮久了,软件开发者、软件公司是否还有必要有自己的代码生成器?...
查看>>
认识redis
查看>>
吞吐量、带宽、bps、pps、转发能力、线速转发、交换带宽
查看>>
华为交换机命令
查看>>
Linux下实现多网卡绑定
查看>>
jQuery特性效果与链式调用
查看>>
Git常用命令和Github协同流程
查看>>
0040-如何重置Cloudera Manager的admin密码
查看>>
在可编辑表格EditorGrid中,我选择一行已输入的数据,点击删除按钮,该行数据将被删除,然后当我点击表单提交按钮时,已经被删除的那一行数据仍然被插入数据库中...
查看>>
idea +springMVC搭建项目,新建各种文件基础
查看>>
Dubbo发展史谁知道?
查看>>
PS常用快捷键就这些了,记住绘图事半功倍
查看>>
expect,spawn用法小结
查看>>
代码详解|如何快速从硬盘里找到小电影?
查看>>
通讯录(容量不可变)
查看>>
我的友情链接
查看>>