Skip to content

Commit 56b00ca

Browse files
committed
[add] add excel and pdf output of View
1 parent b952d71 commit 56b00ca

File tree

6 files changed

+177
-1
lines changed

6 files changed

+177
-1
lines changed

pom.xml

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,13 @@
159159
<version>1.7.18</version>
160160
</dependency>
161161

162+
<!-- java servlet api-->
163+
<dependency>
164+
<groupId>javax.servlet</groupId>
165+
<artifactId>servlet-api</artifactId>
166+
<version>2.5</version>
167+
</dependency>
168+
162169
<!-- JSP tag -->
163170
<dependency>
164171
<groupId>javax.servlet</groupId>
@@ -205,13 +212,19 @@
205212
<version>2.9.4</version>
206213
</dependency>
207214

208-
<!-- apache common-->
215+
<!-- apache common,common-lang-->
209216
<dependency>
210217
<groupId>org.apache.commons</groupId>
211218
<artifactId>commons-lang3</artifactId>
212219
<version>3.4</version>
213220
</dependency>
214221

222+
<dependency>
223+
<groupId>commons-lang</groupId>
224+
<artifactId>commons-lang</artifactId>
225+
<version>2.6</version>
226+
</dependency>
227+
215228
<!-- cglib -->
216229
<dependency>
217230
<groupId>cglib</groupId>
@@ -226,6 +239,20 @@
226239
<version>2.3.23</version>
227240
</dependency>
228241

242+
<!-- apache poi -->
243+
<dependency>
244+
<groupId>org.apache.poi</groupId>
245+
<artifactId>poi</artifactId>
246+
<version>3.14</version>
247+
</dependency>
248+
249+
<!-- pdf -->
250+
<dependency>
251+
<groupId>com.lowagie</groupId>
252+
<artifactId>itext</artifactId>
253+
<version>2.1.7</version>
254+
</dependency>
255+
229256
</dependencies>
230257
</dependencyManagement>
231258
</project>

spring-mvc/pom.xml

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,5 +69,30 @@
6969
<artifactId>freemarker</artifactId>
7070
</dependency>
7171

72+
<!-- java servlet api-->
73+
<dependency>
74+
<groupId>javax.servlet</groupId>
75+
<artifactId>servlet-api</artifactId>
76+
</dependency>
77+
78+
<!-- commons-lang -->
79+
<dependency>
80+
<groupId>commons-lang</groupId>
81+
<artifactId>commons-lang</artifactId>
82+
<version>2.6</version>
83+
</dependency>
84+
85+
<!-- apache poi -->
86+
<dependency>
87+
<groupId>org.apache.poi</groupId>
88+
<artifactId>poi</artifactId>
89+
</dependency>
90+
91+
<!-- pdf -->
92+
<dependency>
93+
<groupId>com.lowagie</groupId>
94+
<artifactId>itext</artifactId>
95+
</dependency>
96+
7297
</dependencies>
7398
</project>

spring-mvc/src/main/java/com/brianway/learning/spring/mvc/web/UserController.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,4 +193,18 @@ public String ShowUserListInFtl(ModelMap modelMap) {
193193
return "userListFtl";
194194
}
195195

196+
@RequestMapping("/userListByXls")
197+
public String ShowUserListInExcel(ModelMap modelMap) {
198+
List<User> users = userService.getUsers();
199+
modelMap.addAttribute("userList", users);
200+
return "userListExcel";
201+
}
202+
203+
@RequestMapping("/userListByPdf")
204+
public String ShowUserListInEPdf(ModelMap modelMap) {
205+
List<User> users = userService.getUsers();
206+
modelMap.addAttribute("userList", users);
207+
return "userListPdf";
208+
}
209+
196210
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package com.brianway.learning.spring.mvc.web;
2+
3+
import com.brianway.learning.spring.mvc.domain.User;
4+
import org.apache.commons.lang.time.DateFormatUtils;
5+
import org.apache.poi.hssf.usermodel.HSSFRow;
6+
import org.apache.poi.hssf.usermodel.HSSFSheet;
7+
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
8+
import org.springframework.web.servlet.view.document.AbstractExcelView;
9+
10+
import java.util.List;
11+
import java.util.Map;
12+
import javax.servlet.http.HttpServletRequest;
13+
import javax.servlet.http.HttpServletResponse;
14+
15+
public class UserListExcelView extends AbstractExcelView {
16+
17+
@Override
18+
protected void buildExcelDocument(Map<String, Object> model,
19+
HSSFWorkbook workbook, HttpServletRequest request,
20+
HttpServletResponse response) throws Exception {
21+
response.setHeader("Content-Disposition", "inline; filename=" +
22+
new String("用户列表".getBytes(), "iso8859-1"));
23+
List<User> userList = (List<User>) model.get("userList");
24+
HSSFSheet sheet = workbook.createSheet("users");
25+
HSSFRow header = sheet.createRow(0);
26+
header.createCell(0).setCellValue("帐号");
27+
header.createCell(1).setCellValue("姓名");
28+
header.createCell(2).setCellValue("生日");
29+
30+
int rowNum = 1;
31+
for (User user : userList) {
32+
HSSFRow row = sheet.createRow(rowNum++);
33+
row.createCell(0).setCellValue(user.getUserName());
34+
row.createCell(1).setCellValue(user.getRealName());
35+
String createDate = DateFormatUtils.format(user.getBirthday(),
36+
"yyyy-MM-dd");
37+
row.createCell(2).setCellValue(createDate);
38+
}
39+
}
40+
}
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
package com.brianway.learning.spring.mvc.web;
2+
3+
import com.brianway.learning.spring.mvc.domain.User;
4+
import com.lowagie.text.Cell;
5+
import com.lowagie.text.Document;
6+
import com.lowagie.text.Element;
7+
import com.lowagie.text.Font;
8+
import static com.lowagie.text.FontFactory.TIMES_ROMAN;
9+
import com.lowagie.text.Phrase;
10+
import com.lowagie.text.Table;
11+
import com.lowagie.text.pdf.BaseFont;
12+
13+
import com.lowagie.text.pdf.PdfWriter;
14+
import org.apache.commons.lang.time.DateFormatUtils;
15+
import org.springframework.web.servlet.view.document.AbstractPdfView;
16+
17+
import java.awt.*;
18+
import java.util.List;
19+
import java.util.Map;
20+
import javax.servlet.http.HttpServletRequest;
21+
import javax.servlet.http.HttpServletResponse;
22+
23+
public class UserListPdfView extends AbstractPdfView {
24+
25+
@Override
26+
protected void buildPdfDocument(Map<String, Object> model,
27+
Document document, PdfWriter writer, HttpServletRequest request,
28+
HttpServletResponse response) throws Exception {
29+
response.setHeader("Content-Disposition", "inline; filename=" +
30+
new String("用户列表".getBytes(), "iso8859-1"));
31+
List<User> userList = (List<User>) model.get("userList");
32+
Table table = new Table(3);
33+
table.setWidth(80);
34+
table.setBorder(1);
35+
table.getDefaultCell().setHorizontalAlignment(Element.ALIGN_CENTER);
36+
table.getDefaultCell().setVerticalAlignment(Element.ALIGN_MIDDLE);
37+
38+
//BaseFont cnBaseFont = BaseFont.createFont("STSongStd-Light", "UniGB-UCS2-H", false);
39+
BaseFont cnBaseFont = BaseFont.createFont();
40+
Font cnFont = new Font(cnBaseFont, 10, Font.NORMAL, Color.BLUE);
41+
42+
table.addCell(buildFontCell("帐号", cnFont));
43+
table.addCell(buildFontCell("姓名", cnFont));
44+
table.addCell(buildFontCell("生日", cnFont));
45+
for (User user : userList) {
46+
table.addCell(user.getUserName());
47+
table.addCell(buildFontCell(user.getRealName(), cnFont));
48+
String createDate = DateFormatUtils.format(user.getBirthday(),
49+
"yyyy-MM-dd");
50+
table.addCell(createDate);
51+
}
52+
document.add(table);
53+
54+
}
55+
56+
private Cell buildFontCell(String content, Font font) throws RuntimeException {
57+
try {
58+
Phrase phrase = new Phrase(content, font);
59+
return new Cell(phrase);
60+
} catch (Exception e) {
61+
throw new RuntimeException(e);
62+
}
63+
}
64+
}

spring-mvc/src/main/webapp/WEB-INF/mvc-servlet.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,4 +85,10 @@
8585
p:suffix=".ftl"
8686
p:contentType="text/html; charset=utf-8"/>
8787

88+
<!-- Excel及PDF视图解析器配置 -->
89+
<bean class="org.springframework.web.servlet.view.BeanNameViewResolver"
90+
p:order="10" />
91+
<bean id="userListExcel" class="com.brianway.learning.spring.mvc.web.UserListExcelView" />
92+
<bean id="userListPdf" class="com.brianway.learning.spring.mvc.web.UserListPdfView" />
93+
8894
</beans>

0 commit comments

Comments
 (0)