一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java poi導出圖片到excel示例代碼

java poi導出圖片到excel示例代碼

2021-07-20 16:27954L Java教程

這篇文章主要介紹java poi如何導出圖片到excel,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

本文實例為大家分享了java使用poi導出圖片到excel的具體代碼,供大家參考,具體內容如下

java poi導出圖片到excel示例代碼

代碼實現

controller

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
/**
 * 導出志愿者/人才數據
 * @param talent_type
 * @return
 */
@requestmapping("/exportdata")
public void exportdata(integer talent_type, httpservletresponse response) {
  string fileid = uuid.randomuuid().tostring().replace("-", "");
  map<string, object> param = new hashmap<>() ;
  param.put("talent_type", talent_type) ;
  try {
   list<map<string, object>> volunteermaplist = volunteerservice.getexportdata(param) ;
   string rootpath = sysconfigmanager.getinstance().gettext("/config/sys/rootpath");
   string filepath = rootpath + "/" + fileid + ".xlsx" ;
   volunteerservice.exportdata(volunteermaplist, filepath) ;
   // 下載
   fileinputstream inputstream = null;
   try{
     //設置發送到客戶端的響應內容類型
     response.reset();
     response.setcontentlength((int) new file(filepath).length());
     response.setcontenttype("application/octet-stream");
     response.addheader("content-disposition", "attachment; filename=\"" + urlencoder.encode("文件名.xlsx", "utf-8")+ "\"");
     //讀取本地圖片輸入流
     inputstream = new fileinputstream(filepath);
     // 循環取出流中的數據
     byte[] b = new byte[1024];
     int len;
     while ((len = inputstream.read(b)) > 0)
      response.getoutputstream().write(b, 0, len);
   } finally{
     if(inputstream != null){
      inputstream.close();
     }
   }
   logger.debug("導出志愿者/人才數據成功!");
  } catch (exception e) {
   e.printstacktrace();
   logger.error("導出志愿者/人才數據異常!");
  }
}

service

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
public void exportdata(list<map<string, object>> volunteermaplist, string filepath) throws exception {
   string[] alias = {"頭像", "名稱", "個人/團體", "志愿者/人才", "性別", "生日", "手機號",
       "身份證", "省份", "市", "區/縣", "詳細地址", "郵箱", "政治面貌", "學歷", "民族",
       "職業", "團隊人數", "藝術特長", "介紹"};
   string[] keys = {"photo", "name", "type", "talent_type", "sex", "birth_day", "mobile",
       "idcard", "province", "city", "county", "address", "email", "political",
       "education", "nation", "profession", "member_count", "art_spetiality", "content"};
   file file = new file(filepath);
   if (!file.exists()) file.createnewfile();
   fileoutputstream fileoutput = new fileoutputstream(file);
   xssfworkbook workbook = new xssfworkbook();
   int sheetsize = volunteermaplist.size() + 50;
   double sheetno = math.ceil(volunteermaplist.size() / sheetsize);
   string photoimgpath = sysconfigmanager.getinstance().gettext("/config/sys/rootpath") ;
   for (int index = 0; index <= sheetno; index++) {
     xssfsheet sheet = workbook.createsheet();
     workbook.setsheetname(index, "人才、志愿者" + index);
     xssfrow row = sheet.createrow(0);
     sheet.setcolumnwidth(0, 2048);
     xssfcell cell;
     xssfcellstyle cellstyle = workbook.createcellstyle();
     xssffont font = workbook.createfont();
     font.setboldweight(xssffont.boldweight_bold);
     // 居中
     cellstyle.setalignment(xssfcellstyle.align_center);
     // 加粗
     cellstyle.setfont(font);
     //創建標題
     for (int i = 0; i < alias.length; i++) {
       cell = row.createcell(i);
       cell.setcellvalue(alias[i]);
       cell.setcellstyle(cellstyle);
     }
     int startno = index * sheetsize;
     int endno = math.min(startno + sheetsize, volunteermaplist.size());
     cellstyle = workbook.createcellstyle();
     // 居中
     cellstyle.setalignment(xssfcellstyle.align_center);
     cellstyle.setverticalalignment(xssfcellstyle.vertical_center);
     // 寫入各條記錄,每條記錄對應excel表中的一行
     for (int i = startno; i < endno; i++) {
       int rownum = i + 1 - startno ;
       row = sheet.createrow(rownum);
       map<string, object> map = (map<string, object>) volunteermaplist.get(i);
       for (int j = 0; j < keys.length; j++) {
         cell = row.createcell(j);
         string key = keys[j] ;
         if (key.equals("photo")){
           sheet.addmergedregion(new cellrangeaddress(i + 1,i + 1,i + 1,i + 1)) ;
           // 頭像
           file photofile = new file(photoimgpath + map.get(key)) ;
           if (photofile.exists()){
             bufferedimage bufferedimage = imageio.read(photofile) ;
             bytearrayoutputstream bytearrayout = new bytearrayoutputstream();
             imageio.write(bufferedimage, "jpg", bytearrayout);
             byte[] data = bytearrayout.tobytearray();
             xssfdrawing drawingpatriarch = sheet.createdrawingpatriarch();
             xssfclientanchor anchor = new xssfclientanchor(480, 30, 700, 250, (short)0, i + 1, (short) 1, i + 2);
             drawingpatriarch.createpicture(anchor, workbook.addpicture(data, xssfworkbook.picture_type_jpeg));
             sheet.setcolumnwidth((short)500, (short)500);
             row.setheight((short)500);
           } else {
             cell.setcelltype(xssfcell.cell_type_string);
             cell.setcellvalue("");
           }
         } else {
           cell.setcelltype(xssfcell.cell_type_string);
           object value = map.get(key);
           cell.setcellvalue(value == null ? "" : value.tostring());
           cell.setcellstyle(cellstyle);
         }
       }
     }
     // 設置列寬
    for (int i = 1; i < alias.length; i++)
       sheet.autosizecolumn(i);
     // 處理中文不能自動調整列寬的問題
this.setsizecolumn(sheet, alias.length);
   }
   fileoutput.flush();
   workbook.write(fileoutput);
   fileoutput.close();
 }
 
 // 自適應寬度(中文支持)
 private void setsizecolumn(xssfsheet sheet, int size) {
   for (int columnnum = 0; columnnum < size; columnnum++) {
     int columnwidth = sheet.getcolumnwidth(columnnum) / 256;
     for (int rownum = 0; rownum <= sheet.getlastrownum(); rownum++) {
       xssfrow currentrow;
       //當前行未被使用過
       if (sheet.getrow(rownum) == null) {
         currentrow = sheet.createrow(rownum);
       } else {
         currentrow = sheet.getrow(rownum);
       }
       if (currentrow.getcell(columnnum) != null) {
         xssfcell currentcell = currentrow.getcell(columnnum);
         if (currentcell.getcelltype() == xssfcell.cell_type_string) {
           int length = currentcell.getstringcellvalue().getbytes().length;
           if (columnwidth < length) columnwidth = length;
         }
       }
     }
     columnwidth = columnwidth * 256 ;
     sheet.setcolumnwidth(columnnum, columnwidth >= 65280 ? 6000 : columnwidth);
   }
 }

以上所述是小編給大家介紹java poi導出圖片到excel示例代碼解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

原文鏈接:https://blog.csdn.net/wkh___/article/details/87431066

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日本黄色大片网站 | 色综合中文字幕在线亚洲 | 欧美亚洲另类在线观看 | 国产激情在线 | 国产精品久久免费 | 91制片厂制作果冻传媒2021 | 亚裔maricahase和黑人 | kk4444了欧美 | 亚州精品永久观看视频 | 天生奶水1v1高h | 国产成人在线免费视频 | 被黑人日 | 免费被黄网站在观看 | 精品福利一区二区免费视频 | 四虎影院久久久 | 亚洲AV久久无码精品九九软件 | 日韩中文字幕视频在线观看 | 精品国产一区二区三区久久久蜜臀 | blackedhd 18sex | 久久高清一级毛片 | 护士videossexo另类 | 双性双根| 亚洲国产欧美目韩成人综合 | 九九精品国产亚洲A片无码 九九99热久久999精品 | 青草精品| 91制片厂 果冻传媒 天美传媒 | 免费观看的毛片 | 色老汉| 91精品国产综合久久福利 | 91精品啪在线观看国产线免费 | 久久噜国产精品拍拍拍拍 | 男同巨黄gay小说好爽 | 好深快点再快点好爽视频 | 特黄视频免费看 | 青草娱乐极品免费视频 | 午夜爱爱爱爱爽爽爽视频网站 | 欧美成人tv在线观看免费 | 99视频在线看 | 精品福利一区 | 亚洲AV永久无码精品澳门 | 免费视频精品一区二区 |