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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

【干货:Excel中插入图片的两种方式】

發(fā)布時間:2024/1/1 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【干货:Excel中插入图片的两种方式】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

背景

業(yè)務中,客戶需要導出各種數據統計報表,如果客戶要求,我希望導出的報表中能插入這些數據的統計圖表該如何操作,如圖: 復制代碼

傳統POI

<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.1.2</version> </dependency> 復制代碼 package com.test.other.demo.report;import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.*; import org.apache.poi.util.IOUtils; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.junit.platform.commons.util.StringUtils;import java.io.*;/*** POI 往excel插入圖片*/ public class POIExport {private Workbook workbook;public static void main(String[] args) throws Exception {Workbook workbook = getWorkBook("/Users/hui.yang/Desktop/excel演示/poi/演示1.xlsx");Sheet sheet = workbook.getSheet("sheet1");InputStream inputStream = new FileInputStream("/Users/hui.yang/Desktop/excel演示/poi/演示圖表1.png");byte[] bytes = IOUtils.toByteArray(inputStream);// 這里根據實際需求選擇圖片類型int pictureIdx = workbook.addPicture(bytes, Workbook.PICTURE_TYPE_JPEG);CreationHelper helper = workbook.getCreationHelper();ClientAnchor anchor = helper.createClientAnchor();Drawing drawing = sheet.createDrawingPatriarch();anchor.setRow1(10); //插入行anchor.setCol1(0); // 插入列// 插入圖片Picture pict = drawing.createPicture(anchor, pictureIdx);// 調整圖片占單元格百分比的大小,1.0就是100%pict.resize(8, 5);//臨時緩沖區(qū)ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();//創(chuàng)建臨時文件try {workbook.write(byteArrayOut);} catch (IOException e) {e.printStackTrace();} finally {workbook.close();}byte[] bookByteAry = byteArrayOut.toByteArray();File file = new File("/Users/hui.yang/Desktop/excel演示/poi/演示插入結果.xlsx");if (!file.getParentFile().exists()) {file.getParentFile().mkdirs();}if (!file.exists()) {file.createNewFile();}FileOutputStream fos = new FileOutputStream(file);fos.write(bookByteAry, 0, bookByteAry.length);fos.flush();fos.close();}/*** 獲取workBoot 兼容xlsx xls*/public static Workbook getWorkBook(String filePath) throws Exception {Workbook workbook = null;if (StringUtils.isBlank(filePath)) {// throw new RuntimeException("路徑錯誤!");} else if (filePath.toLowerCase().endsWith("xls")) {workbook = new HSSFWorkbook(new FileInputStream(filePath));} else if (filePath.toLowerCase().endsWith("xlsx")) {workbook = new XSSFWorkbook(new FileInputStream(filePath));} else {// throw new RuntimeException("路徑錯誤!");}return workbook;} } 復制代碼

e-iceblue(推薦)

<dependency><groupId>e-iceblue</groupId><artifactId>spire.xls.free</artifactId><version>5.1.0</version> </dependency> 復制代碼 package com.test.other.demo.report;import com.spire.xls.*;/*** e-iceblue 往excel插入圖片*/ public class EiceBlueExport {public static void main(String[] args) {//創(chuàng)建Workbook實例Workbook workbook = new Workbook();//加載Excel文檔workbook.loadFromFile("/Users/hui.yang/Desktop/excel演示/e-iceblue/演示1.xlsx");//獲取第一張工作表Worksheet sheet = workbook.getWorksheets().get(0);//設置圖表插入的位置ExcelPicture pic = sheet.getPictures().add(10, 1, "/Users/hui.yang/Desktop/excel演示/e-iceblue/演示圖表1.png");//設置圖片的寬度和高度pic.setWidth(600);pic.setHeight(120);//保存文檔workbook.saveToFile("/Users/hui.yang/Desktop/excel演示/e-iceblue/演示插入結果.xlsx", ExcelVersion.Version2013);//文檔轉pdftransFileToPdf("/Users/hui.yang/Desktop/excel演示/e-iceblue/龐源在線-安全-安全周報-20230303130801.xlsx");}/*** 轉pdf*/public static void transFileToPdf(String fillPath) {Workbook wb = new Workbook();wb.loadFromFile(fillPath);wb.getWorksheets().get(0);ConverterSetting converterSetting = new ConverterSetting();converterSetting.setSheetFitToPage(true);wb.setConverterSetting(converterSetting);//調用方法保存為PDF格式wb.saveToFile("/Users/hui.yang/Desktop/excel演示/e-iceblue/龐源在線-安全-安全周報-20230303130801.pdf", FileFormat.PDF);}} 復制代碼

方案對比

1 poi對xlxs xls不同版本有不同的語法,需要單獨寫個方法去獲取WorkBook,而e-iceblue直接封裝好方法,傻瓜式操作 2 poi需設置圖片類型,文件流操作,而e-iceblue直接封裝好方法,傻瓜式操作 3 e-iceblue有豐富的文檔轉換工具,如轉為PDF,如以上代碼,我這邊轉換的pdf,看了下再也不用在***網站轉pdf了,騷的一批,當然也封裝了其他文檔轉換,這里不贅述 復制代碼

總結

以上是生活随笔為你收集整理的【干货:Excel中插入图片的两种方式】的全部內容,希望文章能夠幫你解決所遇到的問題。

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