当前位置: 首页 > news >正文

珠海企业模板建站如何做亚马逊跨境电商平台

珠海企业模板建站,如何做亚马逊跨境电商平台,汕头智能模板建站,发外链的平台有哪些背景 工作中肯定会有导入excel还附带图片附件的下面是我解析的excel#xff0c;支持图片、pdf、压缩文件实现 依次去解析excel#xff0c;看看也没有附件#xff0c;返回的格式是Map#xff0c;key是第几行#xff0c;value是附件list附件格式都被解析成pdf格式Reader.jav…背景 工作中肯定会有导入excel还附带图片附件的下面是我解析的excel支持图片、pdf、压缩文件 实现 依次去解析excel看看也没有附件返回的格式是Mapkey是第几行value是附件list附件格式都被解析成pdf格式 Reader.java package com.ruoyi.srm.service;import java.util.List;import org.apache.poi.ss.usermodel.Workbook;import com.ruoyi.srm.domain.req.CapacityReceivingReq.FileListBean;public interface Reader {/*** param workbook* param targetRow 目标行索引例如第3行索引从0开始* return*/ListFileListBean read(Workbook workbook, int targetCol);} ReaderComposite.java package com.ruoyi.srm.service.impl;import java.util.Collection; import java.util.List; import java.util.Map; import java.util.stream.Collectors;import org.apache.poi.ss.usermodel.Workbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component;import com.ruoyi.srm.domain.req.CapacityReceivingReq.FileListBean; import com.ruoyi.srm.service.Reader;Component public class ReaderComposite {Autowiredprivate ListReader readerList;/*** param workbook* param targetRow 目标行索引例如第3行索引从0开始* return*/public MapString, ListFileListBean read(Workbook workbook, int targetCol) {return readerList.stream().map(reader - reader.read(workbook, targetCol)).flatMap(Collection::stream).collect(Collectors.groupingBy(t - t.getLine() ));}} ImageReader.java package com.ruoyi.srm.service.impl;import java.io.File; import java.io.FileOutputStream; import java.util.ArrayList; import java.util.Base64; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.atomic.AtomicInteger;import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFClientAnchor; import org.apache.poi.xssf.usermodel.XSSFDrawing; import org.apache.poi.xssf.usermodel.XSSFPicture; import org.apache.poi.xssf.usermodel.XSSFPictureData; import org.apache.poi.xssf.usermodel.XSSFShape; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.springframework.boot.system.ApplicationHome; import org.springframework.stereotype.Component;import com.ruoyi.srm.domain.req.CapacityReceivingReq.FileListBean; import com.ruoyi.srm.service.Reader;import cn.hutool.core.io.FileUtil; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j;Slf4j Component public class ImageReader implements Reader {/*** param workbook* param targetRow 目标行索引例如第3行索引从0开始* return*/OverrideSneakyThrowspublic ListFileListBean read(Workbook workbook, int targetCol) {ApplicationHome home new ApplicationHome();String rootPath home.getDir().getAbsolutePath() File.separator extract File.separator;ListFileListBean result new ArrayList();MapString, AtomicInteger counter new HashMap();// 指定要读取图片的工作表和单元格位置Sheet sheet workbook.getSheetAt(0); // 第一个工作表// 遍历所有绘图对象包含图片if (sheet instanceof XSSFSheet) {XSSFSheet xssfSheet (XSSFSheet) sheet;XSSFDrawing drawing xssfSheet.getDrawingPatriarch();if (drawing ! null) {// 遍历所有形状包括图片String dir rootPath _ System.currentTimeMillis();for (XSSFShape shape : drawing.getShapes()) {if (shape instanceof XSSFPicture) {XSSFPicture picture (XSSFPicture) shape;XSSFClientAnchor anchor (XSSFClientAnchor) picture.getAnchor();// 检查图片的左上角是否在目标单元格int targetRow anchor.getRow1();if (anchor.getCol1() targetCol) {AtomicInteger integer counter.computeIfAbsent(targetRow _ targetCol, k - new AtomicInteger());// 提取图片数据XSSFPictureData pictureData picture.getPictureData();byte[] imageBytes pictureData.getData();// 保存图片到本地new File(dir).mkdirs();String filePath dir File.separator image_ (targetRow 1) _ targetCol _ integer.incrementAndGet() . pictureData.suggestFileExtension();try (FileOutputStream out new FileOutputStream(filePath)) {out.write(imageBytes);log.info(第{}行图片已保存到: {}, targetRow 1, filePath);String encodeToString Base64.getEncoder().encodeToString(FileUtil.readBytes(filePath));String mimeType FileUtil.getMimeType(filePath);if (image/jpeg.equals(mimeType)) {encodeToString data:image/png;base64, encodeToString;}result.add(new FileListBean().setFileName(new File(filePath).getName()).setContent(encodeToString).setLine(targetRow));}}}}}}return result;} } AttachmentReader.java package com.ruoyi.srm.service.impl;import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.util.ArrayList; import java.util.Arrays; import java.util.Base64; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.atomic.AtomicInteger;import org.apache.commons.compress.archivers.zip.ZipArchiveEntry; import org.apache.commons.compress.archivers.zip.ZipArchiveInputStream; import org.apache.commons.io.IOUtils; import org.apache.poi.ooxml.POIXMLDocumentPart; import org.apache.poi.poifs.filesystem.POIFSFileSystem; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFClientAnchor; import org.apache.poi.xssf.usermodel.XSSFDrawing; import org.apache.poi.xssf.usermodel.XSSFObjectData; import org.apache.poi.xssf.usermodel.XSSFShape; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.tika.Tika; import org.springframework.boot.system.ApplicationHome; import org.springframework.stereotype.Component;import com.ruoyi.srm.domain.req.CapacityReceivingReq.FileListBean; import com.ruoyi.srm.service.Reader;import cn.hutool.core.io.FileUtil; import lombok.Cleanup; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j;Slf4j Component public class AttachmentReader implements Reader {/*** param workbook* param targetRow 目标行索引例如第3行索引从0开始* return*/OverrideSneakyThrowspublic ListFileListBean read(Workbook workbook, int targetCol) {ApplicationHome home new ApplicationHome();String rootPath home.getDir().getAbsolutePath() File.separator extract File.separator;ListFileListBean result new ArrayList();MapString, AtomicInteger counter new HashMap();// 1. 获取所有嵌入对象Sheet sheet workbook.getSheetAt(0); // 第一个工作表// 1. 获取所有嵌入对象XSSFSheet xssfSheet (XSSFSheet) sheet;ListPOIXMLDocumentPart relationList xssfSheet.getRelations();// 在遍历嵌入对象时检查锚点位置for (POIXMLDocumentPart part : relationList) {if (part instanceof XSSFDrawing) {XSSFDrawing drawing (XSSFDrawing) part;for (XSSFShape shape : drawing.getShapes()) {if (shape instanceof XSSFObjectData) {XSSFObjectData objData (XSSFObjectData) shape;XSSFClientAnchor anchor (XSSFClientAnchor) objData.getAnchor();// 检查锚点是否在目标位置例如第3行第2列即B3int targetRow anchor.getRow1(); // 行索引从0开始if (anchor.getCol1() targetCol) {AtomicInteger integer counter.computeIfAbsent(targetRow _ targetCol, k - new AtomicInteger());// 提取并保存文件byte[] objectData objData.getObjectData();CleanupPOIFSFileSystem poifs new POIFSFileSystem(new ByteArrayInputStream(objectData));String symbol \u0001Ole10Native;if (poifs.getRoot().getEntryNames().contains(symbol)) {InputStream contentStream poifs.createDocumentInputStream(symbol);String dir rootPath _ System.currentTimeMillis();new File(dir).mkdirs();String name ;byte[] byteArray IOUtils.toByteArray(contentStream);Tika tika new Tika();String detect tika.detect(byteArray);System.err.println(detect);if (application/pdf.equals(detect)) {name dir File.separator pdf_ (targetRow 1) _ targetCol _ integer.incrementAndGet() .pdf;} else if (application/octet-stream.equals(detect)) { // name dir .zip; 注释 // Cleanup // ZipArchiveInputStream seek new ZipArchiveInputStream(new ByteArrayInputStream(byteArray)); // try { // seek.getNextEntry(); // } catch (Exception e) { // log.debug(解析zip失败.尝试解析成图片); // name dir File.separator image_ (targetRow 1) _ targetCol _ integer.incrementAndGet() .jpg; // }}CleanupFileOutputStream out new FileOutputStream(name);out.write(byteArray);log.info(第{}行{}文件保存成功: {}, targetRow 1, detect, name);if (name.endsWith(.zip)) {CleanupZipArchiveInputStream zis new ZipArchiveInputStream(new FileInputStream(name));ZipArchiveEntry entry;while ((entry zis.getNextEntry()) ! null) {if (entry.isDirectory()) {log.warn(是目录);} else {// 如果是文件则解压文件File file new File(dir, entry.getName());try (FileOutputStream out2 new FileOutputStream(file)) {byte[] buffer2 new byte[1024];int len;while ((len zis.read(buffer2)) 0) {out2.write(buffer2, 0, len);}}log.info(第{}提取{}已保存到: {}, targetRow 1, entry.getName(), file.getAbsolutePath());}}}// 转base64Arrays.stream(FileUtil.ls(dir)).forEach(item - {// System.err.println(item.getName());extracted(result, targetRow, item);});}}}}}}return result;}private static void extracted(ListFileListBean result, int targetRow, File item) {String path item.getPath();String encodeToString Base64.getEncoder().encodeToString(FileUtil.readBytes(path));String mimeType FileUtil.getMimeType(path);// System.err.println(mimeType);if (image/jpeg.equals(mimeType)) {encodeToString data:image/png;base64, encodeToString;} else {// System.err.println(encodeToString);}result.add(new FileListBean().setFileName(item.getName()).setContent(encodeToString).setLine(targetRow));} }
http://www.zqtcl.cn/news/209050/

相关文章:

  • 微信网站怎么做下载附件wordpress 代码执行
  • 5050众筹网站开发福州餐饮网站建设
  • 北京国家建设部网站网站备案需要去哪里
  • 廊坊哪里能够做网站网站改版影响
  • 比较好的源码网站手机网站支付如何制作
  • 深圳做网站哪个公司好重庆工程造价信息2021
  • 做电商宠物带哪个网站最好最近一周的重大新闻
  • 做网站难度李沧网站建设电话
  • 六安建设网站网站图片最大尺寸是多少
  • 手机建网站步骤软件优速网站建设
  • 导购网站如何做免费推广用wordpress开发网站模板
  • 建立网站 英语wordpress字体加载
  • 株洲网站建设和制作wordpress 瑞课教育
  • 网站开发培训什么淘宝客网站备案
  • 提供网站制作公司用虚拟机做服务器搭建网站
  • 做煤层气的网站仅对wordpress自带主题有效
  • 优化网站关键词排名东莞网站设计报价
  • 建设厅网站总经济师是干什么的网络运营商电话
  • mvc5 网站开发之美专业企业建站价格
  • 水果电子商务网站建设规划书ipad做网站服务器
  • 网站模版自适应安卓软件开发培训
  • 网络网站建设10大指标开店装修话做那个网站找工人
  • dedecms网站的下载济南网站忧化
  • 深圳北站设计者亚洲国产中文域名查询
  • 有好的学网站建设的书吗龙岗网站建设服务
  • 建个注册页面网站做网站坚持多少年会有起色
  • 做网站是什么职位工商局网站查询入口
  • 做腰椎核磁证网站是 收 七如何做个盈利的网站
  • wordpress查看站点购物网站的后台做哪些东西
  • 文化馆为何需要建设自己的网站网站的建设教程