POI列印Excel檔案水印效果

2022-09-11 07:21:10 字數 3071 閱讀 9100

poi列印excel檔案水印效果

專案列印本來是用jxls利用模板列印,可是加入眉腳之後卻又沒辦法把資料正確賦值到模板上,最後決定用poi完成水印效果,話不多說,上**。請各位大佬多多指導一下。

先建立乙個測試類,寫乙個簡單的列印方法.

public

static

void toexcel() throws

ioexception

string imgpath="d:\\s.png";//

生成水印的路徑

createwatermark("測試水印", imgpath);//

生成水印

putwaterremarktoexcel(wb, sheet, imgpath, 0, 0, 0, 10, 1, 3, 0, 0);//

生成水印

bytearrayoutputstream os = new

bytearrayoutputstream();

try

catch

(ioexception e)

wb.close();

byte content =os.tobytearray();

file file1 = new file("d:/test.xls");//

excel檔案生成後儲存的位置。

outputstream fos = null

;

try

catch

(exception e)

}

我這裡是每次都去重新生成了水印,如果專案中水印是一樣的,只單獨跑一次生成方法,將儲存,以後每次去列印去讀取就可以啦。

/**

* *

@param

content

* @param

path

* @throws

ioexception

*/public

static

void createwatermark(string content,string path) throws

ioexception

為excel打上水印

/**

* 為excel打上水印工具函式 請自行確保引數值,以保證水印之間不會覆蓋。 在計算水印的位置的時候,並沒有考慮到單元格合併的情況,請注意

* *

@param

wb * excel workbook

* @param

sheet

* 需要打水印的excel

* @param

waterremarkpath

* 因為非png格式的打到excel上後可能會有變紅的問題,且不容易做出透明效果。

* @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

//載入

bytearrayoutputstream bytearrayout = new

bytearrayoutputstream();

inputstream imagein=new

fileinputstream(waterremarkpath);

//inputstream imagein = thread.currentthread().getcontextclassloader().getresourceasstream(waterremarkpath);

if (null == imagein || imagein.**ailable() < 1)

bufferedimage bufferimg =imageio.read(imagein);

if (null ==bufferimg)

imageio.write(bufferimg, "png", bytearrayout);

//開始打水印

drawing drawing =sheet.createdrawingpatriarch();

//按照共需列印多少行水印進行迴圈

for (int ycount = 0; ycount < ycount; ycount++) }}

最後效果...

一 利用POI列印excel檔案

pom.xml引入座標 org.apache.poi poi3.9 org.apache.poi poi ooxml 3.9 使用hssf物件列印excel檔案示例 public static void main string args throws ioexception另外,操作excel的還有...

POI 操作 EXCEL檔案

1.最新的poi工具包 poi 主頁 快速上手使用poi hssf 2 excel 結構 hssfworkbook excell 文件物件介紹 hssfsheet excell的表單 hssfrow excell的行 hssfcell excell的格仔單元 hssffont excell字型 hs...

POI生成excel檔案

entranceguarduploadeventmodel eventmodel new entranceguarduploadeventmodel listdatalist entranceguarduploadeventservice.queryall eventmodel 第一步,建立乙個we...