日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

POI将网络图片添加到excel

發布時間:2024/3/13 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 POI将网络图片添加到excel 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

主要看: 讀取網絡圖片,插入excel表格 部分

package com.example.demo.exect;import cn.hutool.core.lang.Console; import cn.hutool.core.util.ReUtil; import cn.hutool.http.HttpUtil; import cn.hutool.poi.excel.ExcelReader; import cn.hutool.poi.excel.ExcelUtil; import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook;import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.net.URL; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern;public class Exect {public static void main(String[] args) throws IOException {Workbook wb = new XSSFWorkbook();Sheet sheet = wb.createSheet("明細");// 設置指定列的寬度sheet.setColumnWidth(24, 22 * 256);// 讀取excelString path = "C:\\Users\\Administrator\\Desktop\\待處理.xlsx";ExcelReader reader = ExcelUtil.getReader(new File(path), "明細");List<List<Object>> readAll = reader.read();long timeMillis = System.currentTimeMillis();// 貨號String hh = "0";// 圖片urlString picPath = null;// 商品品牌String name = null;int index = 0;for (int i = 0; i < readAll.size(); i++) {Row row = sheet.createRow(i);System.out.println(i + "行");for (Object lineObj : readAll.get(i)) {// 添加每個單元格數據row.createCell(index).setCellValue(lineObj + "");// 商品品牌if (index == 2){name = lineObj + "";System.out.println(" "+name);}// 貨號if (index == 11) {// 爬取圖片if (!hh.equals(lineObj)){hh = lineObj + "";// 根據貨號爬取圖片地址if (name.contains("阿迪")){System.out.println(" 查詢貨號:" + hh);picPath = setPicWH(getPicPath(hh + ""));}else if (name.contains("耐克")){// 耐克貨號名稱不帶-符號的話,自動加上if (!hh.contains("-")){hh = hh.substring(0,hh.length()-3) +"-"+hh.substring(hh.length()-3);System.out.println(" 查詢貨號:" + hh);}picPath = getPicPathNK(hh);}else{picPath = null;}}// 讀取網絡圖片,插入excel表格!!!if (picPath != null){// 設置行高row.setHeight((short) 2280);// URL url = new URL("https://img.adidas.com.cn/resources/2021/9/2/16305671552242554.JPG?x-oss-process=image/resize,m_pad,w_150,h_150,limit_0,color_ffffff");// 圖片url地址URL url = new URL(picPath);BufferedImage bufferImg = ImageIO.read(url);ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();ImageIO.write(bufferImg, "jpg", byteArrayOut);byte[] bytes = byteArrayOut.toByteArray();int pictureIdx = wb.addPicture(bytes, Workbook.PICTURE_TYPE_PNG);byteArrayOut.close();CreationHelper helper = wb.getCreationHelper();Drawing drawing = sheet.createDrawingPatriarch();ClientAnchor anchor = helper.createClientAnchor();// 圖片存放- 列anchor.setCol1(24);// 圖片存放- 行anchor.setRow1(i);Picture pict = drawing.createPicture(anchor, pictureIdx);pict.resize();}}++index;}index = 0;}//save workbookString file = "處理完成-圖片.xls";if (wb instanceof XSSFWorkbook) {file += "x";}FileOutputStream fileOut = new FileOutputStream(file);wb.write(fileOut);fileOut.close();System.out.println("處理完成, 耗時(秒):" + (System.currentTimeMillis() - timeMillis) / 1000);}// 阿迪達斯public static String getPicPath(String path) {//String result = HttpUtil.get("https://www.adidas.com.cn/item/GY1028?isFromSearchPage=true");String result = HttpUtil.get("https://www.adidas.com.cn/item/" + path + "?isFromSearchPage=true");List<String> titles = ReUtil.findAll("<input type=\"hidden\" id=\"shoppingcartpic\" value=\"(.*?)\">", result, 1);if (titles == null || titles.size() == 0) {System.out.println(" 未查詢到商品圖片");return null;}return titles.get(0);}public static String getPicPathNK(String path) {// {countryLang} https://www.nike.com/cn/t/air-force-1-07-60-女子運動鞋-ngqK8t/DR0148-171String result = HttpUtil.get("https://www.nike.com/cn/w?q="+path+"&vst="+path);// 匹配規則String reg = "countryLang}(.*?)\\\"}],";Pattern pattern = Pattern.compile(reg);// 內容 與 匹配規則 的測試Matcher matcher = pattern.matcher(result);if( matcher.find() ){// 不包含前后的兩個字符String ma = matcher.group(1);String url = ma.substring(0, ma.indexOf(",") - 1);url = "https://www.nike.com/cn" + url.replace("\\u002F", "/");// 二次請求String resultUrl = HttpUtil.get(url);List<String> titles = ReUtil.findAll("<source srcSet=\"(.*?)\" media", resultUrl, 1);if (titles == null || titles.size() == 0) {System.out.println(" 未查詢到商品圖片");return null;}else{for (String title : titles) {//打印標題if (title.contains("w_640")){String replace = title.replace("w_640", "w_115");return replace;}}}return null;}else{System.out.println(" 未查詢到商品圖片");return null;}}public static String setPicWH(String pic){if (pic != null){if (pic.contains("w_500,h_500")){return pic.replace("w_500,h_500", "w_150,h_150");}if (pic.contains("_500X500")){return pic.replace("_500X500", "") + "?x-oss-process=image/resize,m_pad,w_150,h_150,limit_0,color_ffffff";}}return null;}}

總結

以上是生活随笔為你收集整理的POI将网络图片添加到excel的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。