1 package com.sanying.trust.common.utils.excel;
2
3 import java.util.List;
4 import java.util.Map;
5
6 import org.apache.poi.hssf.usermodel.HSSFCell;
7 import org.apache.poi.hssf.usermodel.HSSFCellStyle;
8 import org.apache.poi.hssf.usermodel.HSSFFont;
9 import org.apache.poi.hssf.usermodel.HSSFRow;
10 import org.apache.poi.hssf.usermodel.HSSFSheet;
11 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
12 import org.apache.poi.ss.usermodel.Cell;
13 import org.apache.poi.ss.usermodel.CellStyle;
14 import org.apache.poi.ss.usermodel.Font;
15 import org.apache.poi.ss.usermodel.Row;
16 import org.apache.poi.ss.usermodel.Sheet;
17 import org.apache.poi.xssf.streaming.SXSSFWorkbook;
18
19
20 /**
21 * Excel表格
22 *
23 */
24 public class ExcelUtil {
25
26
27 @SuppressWarnings("deprecation")
28 public static HSSFWorkbook exportExcel(String title,String[] columnName, List<String[]> texts,Map<Integer, Integer> columnmap) {
29 // 第一步,建立一個webbook,對應一個Excel文件
30 HSSFWorkbook wb = new HSSFWorkbook();
31 // 第二步,在webbook中添加一個sheet,對應Excel文件中的sheet
32 HSSFSheet sheet = wb.createSheet(title);
33 // 第三步,在sheet中添加表頭第0行,注意老版本poi對Excel的行數列數有限制short
34 HSSFRow row = sheet.createRow((int) 0);
35 // 第四步,建立單元格,並設置值表頭 設置表頭居中
36 HSSFCellStyle style = wb.createCellStyle();
37 style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 建立一個居中格式
38 //設置樣式
39 setExcel(wb,sheet,columnName.length,columnmap);
40 HSSFCell cell = null;
41 for (int i = 0; i < columnName.length; i++) {
42 cell = row.createCell((short)i);
43 cell.setCellValue(columnName[i]);
44 cell.setCellStyle(style);
45 }
46
47 for (int i = 0; i < texts.size(); i++) {
48 row = sheet.createRow((int) i + 1);
49 String[] map = texts.get(i);
50 int columnid = 0;
51 for(String val : map) {
52 if(val == null) {
53 row.createCell((short) columnid).setCellValue("");
54 }else {
55 row.createCell((short) columnid).setCellValue(val);
56 }
57 columnid++;
58 }
59 // 第四步,建立單元格,並設置值
60 }
61 return wb;
62 }
63 public static void setExcel(HSSFWorkbook workbook,HSSFSheet sheet,int size,Map<Integer, Integer> map) {
64 // 設置列寬
65 for (int i = 0; i < size; i++) {
66 sheet.setColumnWidth(i, 5000);
67 }
68 if(map != null) {
69 for(Integer key:map.keySet()) {
70 sheet.setColumnWidth(key, map.get(key));
71 }
72 }
73 // Sheet樣式
74 HSSFCellStyle sheetStyle = workbook.createCellStyle();
75
76 sheetStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 水平居中
77 sheetStyle.setAlignment(HSSFCellStyle.VERTICAL_CENTER); // 垂直居中
78 HSSFFont font = workbook.createFont();
79 font.setFontName("宋體");//設置字體
80 font.setFontHeightInPoints((short) 20);//設置字體大小
81 font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//粗體顯示
82 //設置自動換行:
83 sheetStyle.setWrapText(true);//設置自動換行
84
85
86 }
87
88 public static SXSSFWorkbook exportSxssfExcel(String title,String[] columnName, List<String[]> texts,Map<Integer, Integer> columnmap) {
89 // 第一步,建立一個webbook,對應一個Excel文件
90 SXSSFWorkbook wb = new SXSSFWorkbook();
91 // 第二步,在webbook中添加一個sheet,對應Excel文件中的sheet
92 Sheet sheet = wb.createSheet(title);
93 // 第三步,在sheet中添加表頭第0行,注意老版本poi對Excel的行數列數有限制short
94 Row row = sheet.createRow((int) 0);
95 // 第四步,建立單元格,並設置值表頭 設置表頭居中
96 CellStyle style = wb.createCellStyle();
97 style.setAlignment(CellStyle.ALIGN_CENTER); // 建立一個居中格式
98 //設置樣式
99 setSxssfExcel(wb,sheet,columnName.length,columnmap);
100 Cell cell = null;
101 for (int i = 0; i < columnName.length; i++) {
102 cell = row.createCell((short)i);
103 cell.setCellValue(columnName[i]);
104 cell.setCellStyle(style);
105 }
106
107 for (int i = 0; i < texts.size(); i++) {
108 row = sheet.createRow((int) i + 1);
109 String[] map = texts.get(i);
110 int columnid = 0;
111 for(String val : map) {
112 if(val == null) {
113 row.createCell((short) columnid).setCellValue("");
114 }else {
115 row.createCell((short) columnid).setCellValue(val);
116 }
117 columnid++;
118 }
119 // 第四步,建立單元格,並設置值
120 }
121 return wb;
122 }
123
124 public static void setSxssfExcel(SXSSFWorkbook workbook,Sheet sheet,int size,Map<Integer, Integer> map) {
125 // 設置列寬
126 for (int i = 0; i < size; i++) {
127 sheet.setColumnWidth(i, 5000);
128 }
129 if(map != null) {
130 for(Integer key:map.keySet()) {
131 sheet.setColumnWidth(key, map.get(key));
132 }
133 }
134 // Sheet樣式
135 CellStyle sheetStyle = workbook.createCellStyle();
136
137 sheetStyle.setAlignment(CellStyle.ALIGN_CENTER); // 水平居中
138 sheetStyle.setAlignment(CellStyle.VERTICAL_CENTER); // 垂直居中
139 Font font = workbook.createFont();
140 font.setFontName("宋體");//設置字體
141 font.setFontHeightInPoints((short) 20);//設置字體大小
142 font.setBoldweight(Font.BOLDWEIGHT_BOLD);//粗體顯示
143 //設置自動換行:
144 sheetStyle.setWrapText(true);//設置自動換行
145 }
146 }