数据导出到Excel表格

https://www.cnblogs.com/zhangzhiyong-/p/13376527.html

package com.jxmcloud.business.shop.util;import com.jxmcloud.business.shop.util.pay.PayUtil;
import org.apache.poi.POIXMLDocumentPart;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.*;
import org.openxmlformats.schemas.drawingml.x2006.spreadsheetDrawing.CTMarker;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mock.web.MockMultipartFile;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.BiConsumer;/*** 解析excel中图片和文本数据工具类** @author hujun**/
@Component
public class ExcelUtilWithPic {private final Logger logger = LoggerFactory.getLogger(PayUtil.class);@Autowiredprivate SaveFileUtil fileRemoteClient;/*** 解析excel中图片和文本数据* Map<String, String>中key格式 1-1 获取这个excel坐标的图片地址* Sheet对象,用来获取普通文字数据* @Param [file, biConsumer]* @author hujun**/public String handleDataFromExcel(MultipartFile file, BiConsumer<Map<String, List<String>>, Sheet> biConsumer) {Workbook workbook = null;try {String fileName = file.getOriginalFilename();if (!fileName.matches("^.+\\.(?i)(xls)$") && !fileName.matches("^.+\\.(?i)(xlsx)$")) {return "上传文件格式不正确";}boolean isExcel2003 = true;if (fileName.matches("^.+\\.(?i)(xlsx)$")) {isExcel2003 = false;}InputStream is = file.getInputStream();if (isExcel2003) {workbook = new HSSFWorkbook(is);} else {workbook = new XSSFWorkbook(is);}
//            Map<String, String> maplist = null;Map<String, List<String>> maplist =null;Sheet sheet = workbook.getSheetAt(0);// 解析图片,放入mapif (isExcel2003) {
//                maplist = getPicturesXls((HSSFSheet) sheet);maplist = getPicturesXlsMulit((HSSFSheet) sheet);} else if (fileName.endsWith(".xlsx")) {
//                maplist = getPicturesXlsx((XSSFSheet) sheet);maplist = getPicturesXlsxMulit((XSSFSheet) sheet);}//解析文字数据biConsumer.accept(maplist, sheet);workbook.close();} catch (IOException e) {logger.error("解析带图片excel失败", e);return "解析带图片excel失败";}return "操作成功!";}/*** 获取图片和位置 (xls)** @param sheet* @return* @throws IOException*/public Map<String, String> getPicturesXls(HSSFSheet sheet) throws IOException {Map<String, String> map = new HashMap<String, String>();List<HSSFShape> list = sheet.getDrawingPatriarch().getChildren();for (HSSFShape shape : list) {if (shape instanceof HSSFPicture) {HSSFPicture picture = (HSSFPicture) shape;HSSFClientAnchor cAnchor = (HSSFClientAnchor) picture.getAnchor();// 行号-列号String key = cAnchor.getRow1() + "-" + cAnchor.getCol1();map.put(key, byteToMultipartFile(picture.getPictureData().getData()));}}return map;}/*** 获取图片和位置 (xls)* 一个单元格中有多个图片* @param sheet* @return* @throws IOException*/public Map<String, List<String>> getPicturesXlsMulit(HSSFSheet sheet) throws IOException {Map<String, List<String>> map = new HashMap<String, List<String>>();List<HSSFShape> list = sheet.getDrawingPatriarch().getChildren();for (HSSFShape shape : list) {if (shape instanceof HSSFPicture) {HSSFPicture picture = (HSSFPicture) shape;HSSFClientAnchor cAnchor = (HSSFClientAnchor) picture.getAnchor();// 行号-列号String key = cAnchor.getRow1() + "-" + cAnchor.getCol1();String img=byteToMultipartFile(picture.getPictureData().getData());List<String> list1;List<String> list2=map.get(key);if(list2==null){list1=new ArrayList<>();list1.add(img);map.put(key, list1);}else{list2.add(img);map.put(key, list2);}}}return map;}/*** 获取图片和位置 (xlsx)** @param sheet* @return* @throws IOException*/public Map<String, String> getPicturesXlsx(XSSFSheet sheet) throws IOException {Map<String, String> map = new HashMap<String, String>();List<POIXMLDocumentPart> list = sheet.getRelations();for (POIXMLDocumentPart part : list) {if (part instanceof XSSFDrawing) {XSSFDrawing drawing = (XSSFDrawing) part;List<XSSFShape> shapes = drawing.getShapes();for (XSSFShape shape : shapes) {XSSFPicture picture = (XSSFPicture) shape;XSSFClientAnchor anchor = picture.getPreferredSize();CTMarker marker = anchor.getFrom();String key = marker.getRow() + "-" + marker.getCol();map.put(key, byteToMultipartFile(picture.getPictureData().getData()));}}}return map;}/*** 获取图片和位置 (xlsx)* 获取一个单元格中的多个图片* @param sheet* @return* @throws IOException*/public Map<String, List<String>> getPicturesXlsxMulit(XSSFSheet sheet) throws IOException {Map<String, List<String>> map = new HashMap<String, List<String>>();List<POIXMLDocumentPart> list = sheet.getRelations();for (POIXMLDocumentPart part : list) {if (part instanceof XSSFDrawing) {XSSFDrawing drawing = (XSSFDrawing) part;List<XSSFShape> shapes = drawing.getShapes();for (XSSFShape shape : shapes) {XSSFPicture picture = (XSSFPicture) shape;XSSFClientAnchor anchor = picture.getPreferredSize();CTMarker marker = anchor.getFrom();String key = marker.getRow() + "-" + marker.getCol();String img=byteToMultipartFile(picture.getPictureData().getData());List<String> list1;List<String> list2=map.get(key);if(list2==null){list1=new ArrayList<>();list1.add(img);map.put(key, list1);}else{list2.add(img);map.put(key, list2);}}}}return map;}/*** 通过byte[]获取fastdfs中地址* @Param [bytes]* @author hujun**/public String byteToMultipartFile(byte[] bytes) {MultipartFile multipartFile = new MockMultipartFile("file", "test.jpg", "text/plain", bytes);return fileRemoteClient.saveFileOSS(multipartFile);}}

2021-08-01数据导出到Excel表格相关推荐

  1. 百度指数常见php框架,怎么导出数据到excel表格-如何将百度指数数据导出到Excel表格...

    如何将百度指数数据导出到Excel表格 第一步:打开CAD.CAD命令行输入"Li"."选择对象"选需要提取坐标的多段线.回车. 第二步:将CAD文本框中的数据 ...

  2. php怎么将表格导出到excel表格,php怎么将excel表格数据-php 怎么把数据导出到excel表格...

    如何使用php实现将数据从excel表导入到mysql中? /** * @param array $data //二维数组 不是对象 * @param string $filename //导件 */ ...

  3. php 链接excel表格数据,php 怎么把数据导出到excel表格?php 连接 excel表格数据库数据...

    php 怎么把数据导出到excel表格 php 把数据导出到excel表多种方法如使用 phpExcel 等,以下代码是直接通 header 生成 excel 文件的代码示例: header(&quo ...

  4. 查询php 输出表格,php输出excel表格数据-PHP如何将查询出来的数据导出成excel表格(最好做......

    PHP如何将查询出来的数据导出成excel表格(最好做... php 把数据导出excel表格有多种方法,使用 phpExcel 等,以下代码接通过 header 生成 excel 文件的代码示例: ...

  5. php 输入表格数据,怎样将导出数据输入Excel 表格-php 怎么把数据导出到excel表格...

    如何将word文档中的数据导入到excel表格中 方法如下: 1.首先,打开媒介工具"记事本",将word文件里需要导入的数据,复制粘贴到记事本当中,然后保存成为txt文件,本例中 ...

  6. 表格导出计算机,电脑怎么导出excel表格数据-如何将百度指数数据导出到Excel表格...

    系统没有导出功能,电脑表格里的数据有什么方法拿... 将网页表格数据导入到Excel中的方法: 第一步,将包括所需表格的网页打开,并按CTRL C把网址复制到剪贴板,以备下一步使用. 第二步,打开运行 ...

  7. 【纯干货】SSM 实现将数据导出为 Excel 表格(利用反射实现类型通配)

    0. 这里假设 SSM 环境已经搭建完成 1. 需要三个依赖包 <!-- 导出为 Excel --> <dependency><groupId>org.apache ...

  8. vb 读取oracle中的表格数据,如何将数据库信息读取导出excel表格中-VB 从SQL数据库中把数据导出到Excel表格中,怎么写?...

    VB 从SQL数据库中把数据导出到Excel表格中,怎么写? INSERT INTO OpenDataSource('Microsoft.Jet.OLEDB.4.0', 'Data Source=&q ...

  9. 阿里开源(EasyExcel):使用Java将数据导出为Excel表格、带样式----》java web下载 Excel文件

    目录 一.技术选型 二.实现过程 1.导入依赖 2.编写工具类 EasyExcelUtil 3.公用参数类 EasyExcelParams 4.表格样式实体类 MyWriteHandler 5.数据实 ...

最新文章

  1. Java 常用API的运用,效率及技巧
  2. 《树莓派用户指南(第3版)》——2.1 连接显示器
  3. boost------signals2的使用1(Boost程序库完全开发指南)读书笔记
  4. 使用Servlet实现用户注册
  5. 大快人心!和P2P网贷彻底说再见
  6. 什么是物联网?在生活中有何体现?
  7. win7升级Internet Explorer 11 先决条件更新
  8. c语言字符串常量表达,C语言基础教程:字符常量和字符串常量
  9. 漫谈工业软件(2)-IEC61499标准
  10. 苹果奖学金获得者:我的自学 iOS 开发历程
  11. 第十五届全国大学生智能汽车竞赛华南赛区获奖信息
  12. shp导入Oracle
  13. NUnit2.0详细使用方法 选择自 cyp403 的 Blog
  14. React (三) 修改props,React父传子、子传父、this绑定
  15. 使​​用Hashicorp Vault管理PKI并颁发证书
  16. JS中的click事件无反应
  17. 怎样计算权重?——层次分析法、熵值法:工具+数据+案例+代码
  18. 维基解密:CIA早就可以轻易入侵苹果手机和电脑
  19. [完全免费] 在线UML Class Diagram 类图工具 - 教程第1部分
  20. php tp3.2 添加表内容,数据创建 · ThinkPHP3.2.3完全开发手册 · 看云

热门文章

  1. 变频器服务器维修培训,1、服务器培训.doc
  2. 查看显示一切正常连不上服务器,信号一切正常但就是连不上wifi
  3. 新品上线 | 企企通推出达人管理系统,助力达人营销提效增速
  4. .NET把小写数字金额转换成大写人民币金额的两种算法
  5. FlyMcu串口ISP下载STM32程序教程
  6. 红帽linux占有率,红帽主导市场的Linux已经过时了?
  7. Redhat Linux红帽安装Java,以jdk1.8.0_171-linux-x64.zip为例
  8. 稻田香计算机毕业设计官网,大学毕业论文---航空摄影测量内外业一体化在地形图测量中的应用.doc...
  9. 旅行拍照时脸背光怎么办?如何拍出…
  10. mysql中employees的意思_MySQL练习-employees数据库(一)