版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、:設(shè)置水印要顯示的model類(非必要)packagezp.ExcelUtil;importjava.text.SimpleDateFormat;importjava.util.Date;publicclassModelprivateStringip;privateStringuser;privateDatedate;publicModel()/TODOAuto-generatedconstructorstubpublicModel(Stringip,Stringuser,Datedate)this.ip=ip;this.user=user;this.date=date;publicStrin
2、ggetIp()returnip;publicvoidsetIp(Stringip)this.ip=ip;publicStringgetUser()returnuser;publicvoidsetUser(Stringuser)this.user=user;publicStringgetDate()SimpleDateFormatsdf=newSimpleDateFormat(yyyy年MM月dd日HH時(shí)mm分ss秒)returnsdf.format(date);publicvoidsetDate(Datedate)this.date=date;二.編寫(xiě)工具類packagezp.ExcelUt
3、il;importjava.awt.AlphaComposite;importjava.awt.BasicStroke;importjava.awt.Color;importjava.awt.Font;importjava.awt.Graphics2D;importjava.awt.font.FontRenderContext;importjava.awt.geom.Rectangle2D;importjava.awt.image.BufferedImage;importjava.io.File;importjava.io.IOException;importjava.lang.reflect
4、.Method;importjava.util.HashMap;importjava.util.Iterator;importjava.util.Map;importjavax.imageio.ImageIO;importorg.json.JSONException;importorg.json.JSONObject;publicclassUtilssprivatestaticintwidth=900;/水印圖片的寬度privatestaticintheight=1020;/水印圖片的高度因?yàn)樵O(shè)置其他的高度會(huì)有黑線,所以拉高高度/*將JavaBean轉(zhuǎn)換成JSONObject(通過(guò)Map中轉(zhuǎn))
5、*parambeanjavaBeanreturnjson對(duì)象throwsException/publicstaticJSONObjectmodelToJSON(Objectbean)throwsExceptionreturnnewJSONObject(toMap(bean);/*將Javabean轉(zhuǎn)換為Map*paramjavaBeanjavaBeanreturnMap對(duì)象/SuppressWarnings(unchecked,rawtypes)publicstaticMaptoMap(ObjectjavaBean)throwsExceptionMapresult=newHashMap();M
6、ethodmethods=javaBean.getClass().getDeclaredMethods();for(Methodmethod:methods)if(method.getName().startsWith(get)Stringfield=method.getName();field=field.substring(field.indexOf(get)+3);field=field.toLowerCase().charAt(0)+field.substring(1);Objectvalue=method.invoke(javaBean,(Object)null);result.pu
7、t(field,null=value?:value.toString();returnresult;/*將Json對(duì)象轉(zhuǎn)換成Map*paramjsonObjectjson對(duì)象returnMap對(duì)象throwsJSONException/SuppressWarnings(rawtypes,unchecked)publicstaticMaptoMap(StringjsonString)throwsJSONExceptionJSONObjectjsonObject=newJSONObject(jsonString);Mapresult=newHashMap();Iteratoriterator=js
8、onObject.keys();Stringkey=null;Stringvalue=null;while(iterator.hasNext()key=(String)iterator.next();value=jsonObject.getString(key);result.put(key,value);returnresult;/*生成水印圖片*paramwatermarkreturnthrowsIOException/publicstaticFilecreateWaterMark(Stringwatermark)throwsIOExceptionintwidth=800;intheigh
9、t=1020;Filefile=newFile(watermark.bmp);Fontfont=newFont(Serif,Font.ITALIC,20);BufferedImagebi=newBufferedImage(width,height,BufferedImage.TYPE_INT_RGB);Graphics2Dg2=bi.createGraphics();/設(shè)置字體顏色為灰色g2.setColor(Color.LIGHT_GRAY);/設(shè)置字體g2.setFont(font);/設(shè)置字體傾斜度g2.rotate(Math.toRadians(0),(double)bi.getWid
10、th()/2,(double)bi.getHeight()/2);g2.setBackground(Color.WHITE);g2.clearRect(0,0,width,height);FontRenderContextcontext=g2.getFontRenderContext();Rectangle2Dbounds=font.getStringBounds(watermark,context);doublex=(width-bounds.getWidth()/2;doubley=(height-bounds.getHeight()/2;doubleascent=-bounds.getY
11、();doublebaseY=y+ascent;g2.drawString(watermark,(int)x,(int)baseY);/ImageIO.write(bi,bmp,file);/通過(guò)bmp寫(xiě)入文件/BMPEncoder.write(bi,file);returnfile;SuppressWarnings(rawtypes,unchecked)publicstaticMapcreateWaterMark1(MapwatermarkMessage)throwsIOExceptionMapmap=newHashMap();Filefile=newFile(watermark.bmp);
12、/獲取bufferedlmage對(duì)象BufferedImagebi=newBufferedImage(width,height,BufferedImage.TYPE_INT_RGB);/處理背景色,設(shè)置為白色intminx=bi.getMinX();intminy=bi.getMinY();for(inti=minx;iwidth;i+)for(intj=miny;jheight;j+)bi.setRGB(i,j,0 xffffff);/獲取Graphics2d對(duì)象Graphics2Dg2d=bi.createGraphics();/設(shè)置字體顏色為灰色g2d.setColor(Color.LI
13、GHT_GRAY);/設(shè)置圖片的屬性g2d.setStroke(newBasicStroke(1);/設(shè)置字體g2d.setFont(newFont(Serif,Font.ITALIC,40);/設(shè)置字體傾斜度g2d.rotate(Math.toRadians(-8);/寫(xiě)入水印文字原定高度過(guò)小,所以累計(jì)寫(xiě)水印,增加高度f(wàn)or(inti=1;i7;i+)Objectkey=watermarkMessage.keySet().toArray();for(intj=0;jkey.length;j+)if(keyj.equals(date)g2d.drawString(日期:+watermarkMe
14、ssage.get(keyj),0,180*i+40*(j+1);elseif(keyj.equals(user)g2d.drawString(用戶:+watermarkMessage.get(keyj),0,180*i+40*(j+1);elseif(keyj.equals(ip)g2d.drawString(IP地址:+watermarkMessage.get(keyj),0,180*i+40*(j+1);elseg2d.drawString(String)keyj+:+watermarkMessage.get(keyj),0,180*i+40*(j+1);/設(shè)置透明度g2d.setCom
15、posite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER);/釋放對(duì)象g2d.dispose();/通過(guò)bmp寫(xiě)入文件/BMPEncoder.write(bi,file);ImageIO.write(bi,bmp,file);map.put(file,file);map.put(width,width);map.put(height,height);returnmap;三.編寫(xiě)處理類packagezp.ExcelUtil;importjava.io.File;importjava.io.FileInputStream;importjav
16、a.io.InputStream;importjava.util.Map;importorg.json.JSONObject;importjxl.Workbook;importjxl.write.WritableSheet;importjxl.write.WritableWorkbook;publicclassExcelUtil/*paramxls_filePath_in要添加水印的excel文件路徑(必須是*.xls文件,如/m次歸)paramxls_filePath_outexcel文件輸出路徑(必須是*.xls文件,如/out.xls)paramwatermarkTextthrowsEx
17、ception*/SuppressWarnings(rawtypes)publicstaticvoidaddWatermark(Stringxls_filePath_in,Stringxls_filePath_out,JSONObjectwatermarkText)throwsExceptionInputStreamis=newFileInputStream(newFile(xls_filePath_in);Workbookwb=Workbook.getWorkbook(is);/獲得原始文檔WritableWorkbookwwb=Workbook.createWorkbook(newFile
18、(xls_filePath_out),wb);WritableSheetws1=wwb.getSheet(0);/得到工作薄中的第一個(gè)工作表/StringwatermarkMessage=jsonObject.toString();MapwatermarkMessage=Utilss.toMap(watermarkText.toString();Mapmap=Utilss.createWaterMark1(watermarkMessage);FilefileImg=(File)map.get(file);/FilefileImg=newFile(kkkk.bmp);byteimageData=newbyte(int)fileImg.length();FileInputStreamfis=newFileInputStream(fileImg);fis.read(imageData);/mustbe24bittrue-colour,bmpfile/*paramimageByte/*paramwidthPixel/*paramheightPixelws1.setWaterMarkImage(imageData,(int)map.get(width),(int)map.g
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 衛(wèi)生系統(tǒng)應(yīng)急值守制度
- 校區(qū)衛(wèi)生值日制度
- 衛(wèi)生公開(kāi)機(jī)制制度
- 衛(wèi)生院工青婦制度
- 學(xué)校物業(yè)衛(wèi)生制度
- 衛(wèi)生考核獎(jiǎng)罰制度
- 衛(wèi)生行政聽(tīng)證制度
- 衛(wèi)生清潔標(biāo)準(zhǔn)制度
- 衛(wèi)生健康1110制度
- 小學(xué)食堂衛(wèi)生保潔制度
- GB/T 3672.1-2025橡膠制品的公差第1部分:尺寸公差
- 2025外研社小學(xué)英語(yǔ)三年級(jí)下冊(cè)單詞表(帶音標(biāo))
- 承包檳榔園合同轉(zhuǎn)讓協(xié)議書(shū)
- 鵬城實(shí)驗(yàn)室雙聘管理辦法
- 隧道滲漏檢測(cè)技術(shù)-洞察及研究
- x探傷安全管理制度
- 財(cái)政分局對(duì)賬管理制度
- 噴水機(jī)車間管理制度
- 云師大附中 2026 屆高三高考適應(yīng)性月考(一)-地理試卷(含答案)
- 商業(yè)銀行反洗錢(qián)風(fēng)險(xiǎn)管理自評(píng)估制度研究
- 2025年度法院拍賣合同模板:法院拍賣拍賣保證金退還合同
評(píng)論
0/150
提交評(píng)論