摘要:中導出數據是常見的功能,最近遇到一個需求是在中插入圖片。處理及其他微軟辦公系列軟件常用的就是,它也是支持圖片插入的。
java web中導出excel數據是常見的功能,最近遇到一個需求是在excel中插入圖片。處理excel及其他微軟辦公系列軟件常用的就是apache poi,它也是支持圖片插入的。插入圖片最主要的用到HSSFClientAnchor,文檔介紹如下:
public HSSFClientAnchor(int dx1,
int dy1, int dx2, int dy2, short col1, int row1, short col2, int row2)
Creates a new client anchor and sets the top-left and bottom-right coordinates of the anchor. Note: Microsoft Excel seems to sometimes disallow higher y1 than y2 or higher x1 than x2, you might need to reverse them and draw shapes vertically or horizontally flipped!
簡單的demo:
import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import javax.imageio.ImageIO; import org.apache.poi.hssf.usermodel.HSSFClientAnchor; import org.apache.poi.hssf.usermodel.HSSFPatriarch; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; public class ExcelExport { public static void main(String[] args) { FileOutputStream fileOut = null; BufferedImage bufferImg = null; try { ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream(); //加載圖片 bufferImg = ImageIO.read(new File("e:/1.jpg")); ImageIO.write(bufferImg, "jpg", byteArrayOut); HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet1 = wb.createSheet("sheet1"); HSSFPatriarch patriarch = sheet1.createDrawingPatriarch(); /** dx1 - the x coordinate within the first cell.//定義了圖片在第一個cell內的偏移x坐標,既左上角所在cell的偏移x坐標,一般可設0 dy1 - the y coordinate within the first cell.//定義了圖片在第一個cell的偏移y坐標,既左上角所在cell的偏移y坐標,一般可設0 dx2 - the x coordinate within the second cell.//定義了圖片在第二個cell的偏移x坐標,既右下角所在cell的偏移x坐標,一般可設0 dy2 - the y coordinate within the second cell.//定義了圖片在第二個cell的偏移y坐標,既右下角所在cell的偏移y坐標,一般可設0 col1 - the column (0 based) of the first cell.//第一個cell所在列,既圖片左上角所在列 row1 - the row (0 based) of the first cell.//圖片左上角所在行 col2 - the column (0 based) of the second cell.//圖片右下角所在列 row2 - the row (0 based) of the second cell.//圖片右下角所在行 */ HSSFClientAnchor anchor = new HSSFClientAnchor(-100, 0, 0, 0,(short) 2, 2, (short) 5, 8); //插入圖片 patriarch.createPicture(anchor, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); fileOut = new FileOutputStream("e:/excel.xls"); // 輸出文件 wb.write(fileOut); } catch (Exception e) { e.printStackTrace(); } } }
關于dx1的設置的說明,dx2,dy1等都是類似的
關于一個excel設置多張圖片的demo
package com.poi; import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import javax.imageio.ImageIO; import org.apache.poi.hssf.usermodel.HSSFClientAnchor; import org.apache.poi.hssf.usermodel.HSSFPatriarch; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; public class ExcelExport { public static void main(String[] args) { FileOutputStream fileOut = null; BufferedImage bufferImg = null; try { ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream(); //加載圖片 bufferImg = ImageIO.read(new File("e:/1.jpg")); ImageIO.write(bufferImg, "jpg", byteArrayOut); HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet1 = wb.createSheet("sheet1"); HSSFPatriarch patriarch = sheet1.createDrawingPatriarch(); HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 0, 0,(short) 2, 2, (short) 5, 8); //插入圖片 1 patriarch.createPicture(anchor, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); //圖片2 anchor = new HSSFClientAnchor(200, 0, 0, 0,(short) 2, 9, (short) 5, 15); patriarch.createPicture(anchor, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); fileOut = new FileOutputStream("e:/excel.xls"); // 輸出文件 wb.write(fileOut); } catch (Exception e) { e.printStackTrace(); } } }
總體來說使用poi還是很方便的。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/66392.html
摘要:閱讀原文如何高效導出百萬級數據在一個具有統計功能的系統中,導出功能幾乎是一定的,如何導出導出的數據有多少如何高效的導出簡介什么是就不用介紹了,這里主要說明不同版本下每個下的行列限制。 閱讀原文:POI如何高效導出百萬級Excel數據? 在一個具有統計功能的系統中,導出excel功能幾乎是一定的,如何導出excel?導出的數據有多少?如何高效的導出? Excel簡介什么是excel就不用...
時間:2017年07月06日星期四說明:本文部分內容均來自慕課網。@慕課網:http://www.imooc.com教學源碼:無學習源碼:https://github.com/zccodere/s... 第一章:課程介紹 1-1 預備知識 基礎知識 struts2框架(上傳下載功能) xml解析技術(導入模板) JQuery EasyUI(前臺美觀) 課程目錄 實現方式 定制導入模版 導入文件 導...
摘要:一般訂單打印紙高度毫米字母或半角字符判斷是否為全角全角符號及中文連續出現,認為是單詞組成部分的字符和間單頁的票據右端聯頁寬占用的寬度回退一行每減一次少一行實際高度的距離補足行高拉高的行內容要調整使用靠上對齊補充 import org.apache.poi.hssf.usermodel.*; import org.apache.poi.hssf.util.Region; import ...
摘要:最近在做使用進行大數據量導出,現在把其整理成工具類供大家參考。版本增加了前綴為相關的類,主要用于大數據量的寫入與讀取。 最近在做使用POI進行大數據量導出,現在把其整理成工具類供大家參考。Apache POI 3.8版本增加了前綴為SXSSF相關的類,主要用于大數據量的寫入與讀取。關于ApachePOI導出Excel基本的使用我這里就不詳解了,具體參考: Apache POI官方網站...
摘要:效果預覽導出文件效果點擊下載彈出框效果代碼總覽為公司業務代碼,大多為從緩存或者數據庫中獲取導出數據,不影響導出功能。導出導出導出所有在線離線用戶成功導出所有在線離線用戶失敗引用導出表格 需求 將每個xmpp機房的在線/離線用戶信息導出到Excel表格中(定時任務+網頁按鈕),并在網頁上提供下載按鈕進行下載。 效果預覽 showImg(https://segmentfault.com/i...
閱讀 2376·2021-09-22 15:15
閱讀 640·2021-09-02 15:11
閱讀 1784·2021-08-30 09:48
閱讀 1884·2019-08-30 15:56
閱讀 1480·2019-08-30 15:52
閱讀 2042·2019-08-30 15:44
閱讀 431·2019-08-29 16:29
閱讀 1538·2019-08-29 11:06