Servlet编程中,将网页数据导出到Excel

在实际的开发中,经常需要将一些数据导出到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>


(欢迎广大读者阅读,讨教,有疑问的地方请留言)






评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值