在实际的开发中,经常需要将一些数据导出到Excel或者Word来进行处理。本实例将介绍如何使用POI开源组件实现将数据导出到Excel文件中。运行本实例,输入户注册信息,单击“导出到Excel”按钮后,会将用户的信息导出到Excel文件中,如下图:
关键步骤:
(1)创建Excel的工作表。POI组件的HSSFWorkbook类提供了创建工作表的方法,语法格式如下:
public HSSFSheet createSheet(String sheetname){} //参数sheetname,表示工作表的名称
(2)创建表格的行。在保存之前需要新创建对象,该对象由工作表对象创建,语法格式如下:
public HSSFRow createRow(int rownum){} //参数rownum表示工作表中行对象的行号
(3)创建表格的单元格。Excel表格中的数据由多个单元格组成,在POI组件中,这些单元格对象由HSSFCell类的createCell()方法创建,语法格式如下:
public HSSFRcell createCell(int columnIndex){} //参数columnIndex表示单元格对象的列编号
(4)写入单元格内容。单元格对象定义了各种类型数据的方法,其中最常见的就是String类型的字符串数据。语法如下:
public void setCellValue(String value){}//参数value表示保存在Excel单元格中的数据
设计过程:
(1)新建用户注册表单index.jsp,关键代码如下:
<form action="export" method="post">
<table align="center">
<tr>
<td>用户名:</td>
<td>
<input type="text" name="name" />
</td>
</tr>
<tr>
<td>密码:</td>
<td>
<input type="password" name="pwd" />
</td>
</tr>
<tr>
<td>性别:</td>
<td><input type="radio" name="sex" value="男" checked="checked" />男
<input type="radio" name="sex" value="女" />女
</td>
</tr>
<tr>
<td>年龄:</td>
<td>
<input type="text" name="age" />
</td>
</tr>
<tr>
<td>Email:</td>
<td><input type="text" name="email" />
</td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" value="导出到Excel" />
</td>
</tr>
</table>
</form>
(2)新建名为ExportServlet的Servlet类,在该类的doPost()方法中获得用户注册信息,然后使用POI组件中的类将用户注册信息导出到Excel文件中,代码如下:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//设置响应正文的MIME类型,该类型表示Excel
request.setCharacterEncoding("gbk");
response.setContentType("application/vnd.ms-excel");
String name = request.getParameter("name");
String pwd =request.getParameter("pwd");
String sex = request.getParameter("sex");
System.out.println(sex);
String age = request.getParameter("age");
String email = request.getParameter("email");
ServletOutputStream out = response.getOutputStream(); //响应输出流对象
HSSFWorkbook wb = new HSSFWorkbook(); //创建Excel表格
HSSFSheet sheet = wb.createSheet("用户注册信息"); //创建工作薄
sheet.setColumnWidth(4, 5000); //设置列宽
HSSFRow titleRow = sheet.createRow(0); //创建Excel中的标题栏,第1行
HSSFCell titleCell1 = titleRow.createCell(0); //在行中创建第1个单元格
titleCell1.setCellValue("用户姓名"); //设置第1个单元格的值
HSSFCell titleCell2= titleRow.createCell(1); //在行中创建第2个单元格
titleCell2.setCellValue("密码"); //设置第2个单元格的值
HSSFCell titleCell3 =titleRow .createCell(2); //在行中创建第3个单元格
titleCell3.setCellValue("性别"); //设置第3个单元格的值
HSSFCell titleCell4= titleRow.createCell(3); //在行中创建第4个单元格
titleCell4.setCellValue("年龄"); //设置第4个单元格的值
HSSFCell titleCell5= titleRow.createCell(4); //在行中创建第5个单元格
titleCell5.setCellValue("Email"); //设置第5个单元格的值
HSSFRow valueRow = sheet.createRow(1); //创建第2行
HSSFCell nameCell = valueRow.createCell(0); //在第2行中创建单元格
nameCell.setCellValue(name);
HSSFCell pwdCell = valueRow.createCell(1);
pwdCell.setCellValue(pwd);
HSSFCell sexCell = valueRow.createCell(2);
sexCell.setCellValue(sex);
HSSFCell ageCell = valueRow.createCell(3);
ageCell.setCellValue(age);
HSSFCell emailCell = valueRow.createCell(4);
emailCell.setCellValue(email);
HSSFCellStyle cellStyle = wb.createCellStyle();
wb.write(out); //将响应流输入到Excel表格中
out.flush();
}
(3)在web.xml中配置ExportServlet类,关键代码如下:
<servlet>
<servlet-name>ExportServlet</servlet-name>
<servlet-class>com.lpp.servlet.ExportServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ExportServlet</servlet-name>
<url-pattern>/export</url-pattern>
</servlet-mapping>
(欢迎广大读者阅读,讨教,有疑问的地方请留言)