91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 2.51MB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發布日期: 2023-11-10
  • 語言: Java
  • 標簽: excel??水印??java??

資源簡介

java通過POI組件可以給導出的excel表格添加水印,不需要額外的組件

資源截圖

代碼片段和文件信息



import?java.awt.image.BufferedImage;
import?java.io.ByteArrayOutputStream;
import?java.io.FileInputStream;
import?java.io.IOException;
import?java.io.InputStream;

import?javax.imageio.ImageIO;

import?org.apache.poi.ss.usermodel.ClientAnchor;
import?org.apache.poi.ss.usermodel.Drawing;
import?org.apache.poi.ss.usermodel.Picture;
import?org.apache.poi.ss.usermodel.Sheet;
import?org.apache.poi.ss.usermodel.Workbook;
/**
?*?
?*?@author?lyt
?*?2017年7月19日
?*/

public?class?ExcelWaterRemarkUtils?{

/**
?*?為Excel打上水印工具函數?請自行確保參數值,以保證水印圖片之間不會覆蓋。?在計算水印的位置的時候,并沒有考慮到單元格合并的情況,請注意
?*?
?*?@param?wb
?*????????????Excel?Workbook
?*?@param?sheet
?*????????????需要打水印的Excel
?*?@param?waterRemarkPath
?*????????????水印地址,classPath,目前只支持png格式的圖片,
?*????????????因為非png格式的圖片打到Excel上后可能會有圖片變紅的問題,且不容易做出透明效果。
?*????????????同時請注意傳入的地址格式,應該為類似:“\\excelTemplate\\test.png“
?*?@param?startXCol
?*????????????水印起始列
?*?@param?startYRow
?*????????????水印起始行
?*?@param?betweenXCol
?*????????????水印橫向之間間隔多少列
?*?@param?betweenYRow
?*????????????水印縱向之間間隔多少行
?*?@param?XCount
?*????????????橫向共有水印多少個
?*?@param?YCount
?*????????????縱向共有水印多少個
?*?@param?waterRemarkWidth
?*????????????水印圖片寬度為多少列
?*?@param?waterRemarkHeight
?*????????????水印圖片高度為多少行
?*?@throws?IOException
?*/
public?static?void?putWaterRemarkToExcel(Workbook?wb?Sheet?sheet?String?waterRemarkPath?int?startXCol
int?startYRow?int?betweenXCol?int?betweenYRow?int?XCount?int?YCount?int?waterRemarkWidth
int?waterRemarkHeight)?throws?IOException?{

//?校驗傳入的水印圖片格式
if?(!waterRemarkPath.endsWith(“png“)?&&?!waterRemarkPath.endsWith(“PNG“))?{
throw?new?RuntimeException(“向Excel上面打印水印,目前支持png格式的圖片。“);
}

//?加載圖片
ByteArrayOutputStream?byteArrayOut?=?new?ByteArrayOutputStream();
InputStream?imageIn=new?FileInputStream(waterRemarkPath);
//InputStream?imageIn?=?Thread.currentThread().getContextClassLoader().getResourceAsStream(waterRemarkPath);
if?(null?==?imageIn?||?imageIn.available()? throw?new?RuntimeException(“向Excel上面打印水印,讀取水印圖片失敗(1)。“);
}
BufferedImage?bufferImg?=?ImageIO.read(imageIn);
if?(null?==?bufferImg)?{
throw?new?RuntimeException(“向Excel上面打印水印,讀取水印圖片失敗(2)。“);
}
ImageIO.write(bufferImg?“png“?byteArrayOut);

//?開始打水印
Drawing?drawing?=?sheet.createDrawingPatriarch();

//?按照共需打印多少行水印進行循環
for?(int?yCount?=?0;?yCount? //?按照每行需要打印多少個水印進行循環
for?(int?xCount?=?0;?xCount? //?創建水印圖片位置
int?xIndexInteger?=?startXCol?+?(xCount?*?waterRemarkWidth)?+?(xCount?*?betweenXCol);
int?yIndexInteger?=?startYRow?+?(yCount?*?waterRemarkHeight)?+?(yCount?*?betweenYRow);
/*
?*?參數定義:?第一個參數是(x軸的開始節點);?第二個參數是(是y軸的開始節點);?第三個參數是(是x軸的結束節點);
?*?第四個參數是(是y軸的結束節點);?第五個參數是(是從Excel的第幾列開始插入圖片,從0開始計數);
?*?第六個參數是(是從excel的第幾行開始插入圖片,從0開始計數);?第七個參數是(圖片寬度,共多少列);
?*?第8個參數是(圖片高度,共多少行);
?*/
ClientAnchor?anchor?=?

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-08-02?17:29??通過POI給導出的excel添加水印\
?????目錄???????????0??2018-08-02?17:29??通過POI給導出的excel添加水印\通過POI給excel添加水印\
?????目錄???????????0??2017-07-19?11:57??通過POI給導出的excel添加水印\通過POI給excel添加水印\.settings\
?????文件?????????598??2017-07-19?11:57??通過POI給導出的excel添加水印\通過POI給excel添加水印\.settings\org.eclipse.jdt.core.prefs
?????目錄???????????0??2017-07-19?12:09??通過POI給導出的excel添加水印\通過POI給excel添加水印\lib\
?????文件??????232771??2015-06-15?17:43??通過POI給導出的excel添加水印\通過POI給excel添加水印\lib\commons-codec-1.6.jar
?????文件?????2679259??2017-07-13?11:00??通過POI給導出的excel添加水印\通過POI給excel添加水印\lib\poi-3.16.jar
?????目錄???????????0??2017-07-19?12:00??通過POI給導出的excel添加水印\通過POI給excel添加水印\src\
?????文件????????4269??2017-07-19?12:04??通過POI給導出的excel添加水印\通過POI給excel添加水印\src\ExcelWaterRemarkUtils.java
?????文件????????2241??2017-07-19?12:07??通過POI給導出的excel添加水印\通過POI給excel添加水印\src\ImageUtils.java
?????文件????????2669??2017-07-19?12:10??通過POI給導出的excel添加水印\通過POI給excel添加水印\src\poiexe.java

評論

共有 條評論