操作excel表

以下是代码演示:


index:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'index.jsp' starting page</title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
  </head>
  
  <body>
   <a href="downLoad">下载</a>
  </body>
</html>


web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
  <display-name></display-name>	
  
  <servlet>
  	<servlet-name>DownLoad</servlet-name>
  	<servlet-class>com.zuxia.yc42.servlet.PoiServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>DownLoad</servlet-name>
  	<url-pattern>/downLoad</url-pattern>
  </servlet-mapping>
  
  <!-- 配置JSTL标签库 -->
  <jsp-config>
  	<taglib>
  		<taglib-uri>http://www.zuxia.com/yc42</taglib-uri>
  		<taglib-location>/WEB-INF/tld/c.tld</taglib-location>
  	</taglib>
  	<taglib>
  		<taglib-uri>http://www.zuxia.com/yc42/purview</taglib-uri>
  		<taglib-location>/WEB-INF/tld/purview.tld</taglib-location>
  	</taglib>
  </jsp-config>
  
  <!-- 欢迎页面 -->
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>


com.zuxia.yc42.po

——public class UserInfo implements Serializable :

package com.zuxia.yc42.po;

import java.io.Serializable;

public class UserInfo implements Serializable 
{

	private Integer usId;
	private String usName;
	private Integer usAge;
	private String usSex;
	public Integer getUsId() {
		return usId;
	}
	public void setUsId(Integer usId) {
		this.usId = usId;
	}
	public String getUsName() {
		return usName;
	}
	public void setUsName(String usName) {
		this.usName = usName;
	}
	public Integer getUsAge() {
		return usAge;
	}
	public void setUsAge(Integer usAge) {
		this.usAge = usAge;
	}
	public String getUsSex() {
		return usSex;
	}
	public void setUsSex(String usSex) {
		this.usSex = usSex;
	}
	
	
}


com.zuxia.yc42.util

——public class ExportExcel<T>:

package com.zuxia.yc42.util;

import java.io.IOException;
import java.io.OutputStream;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

public class ExportExcel<T>
{

	public void exportExcel(OutputStream out) throws IOException
	{
		//创建文档对象
		HSSFWorkbook work = new HSSFWorkbook();
		//创建表单对象
		HSSFSheet sheet = work.createSheet("工作表单");
		//创建新行
		HSSFRow row = sheet.createRow(0);
		//创建单元格
		HSSFCell cell0 = row.createCell(0);
		HSSFCell cell1 = row.createCell(1);
		//给单元格设置值
		cell0.setCellValue("学号");
		cell1.setCellValue("姓名");
		//给单元格设置样式
		HSSFCellStyle style = work.createCellStyle();
		style.setFillBackgroundColor(HSSFCellStyle.BORDER_DOTTED);
		cell0.setCellStyle(style);
		
		//将文档对象写入输出流
		work.write(out);
		
	}
	
	/**
	 * 
	 * @param headers  标题列
	 * @param dataset  数据集合
	 * @param out      输出流
	 * @throws IOException 
	 */
	public void exportExcel(String[] headers,Collection<T> dataset,OutputStream out) throws IOException
	{
		Field[] fields = null;
		//创建文档对象
		HSSFWorkbook work = new HSSFWorkbook();
		//创建表单对象
		HSSFSheet sheet = work.createSheet("工作表单");
		//创建标题行
		HSSFRow row_0 = sheet.createRow(0);
		
		//设置标题行内容
		for(int i = 0;i<headers.length;i++)
		{
			//创建单元格
			HSSFCell cell = row_0.createCell(i);
			//设置单元格内容
			cell.setCellValue(headers[i]);
		}
		
		
		Iterator<T> iterator = dataset.iterator();
		
		for(int i=1;iterator.hasNext();i++)
		{
			T t = iterator.next();
			
			if(fields==null)
			{
				fields = t.getClass().getDeclaredFields();
			}
			
			//创建标题行
			HSSFRow row = sheet.createRow(i);
			
			//设置标题行内容
			for(int j = 0;j<fields.length;j++)
			{
				//创建单元格
				HSSFCell cell = row.createCell(j);
				//设置单元格内容
				try {
					fields[j].setAccessible(true);
					cell.setCellValue(fields[j].get(t).toString());
				} catch (IllegalArgumentException e) {
					e.printStackTrace();
				} catch (IllegalAccessException e) {
					e.printStackTrace();
				}
			}
		}
		work.write(out);
	}
}


com.zuxia.yc42.test

——public class Main:

package com.zuxia.yc42.test;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

public class Main {

	/**
	 * @param args
	 */
	public static void main(String[] args)
	{
		//创建文档对象
		HSSFWorkbook work = new HSSFWorkbook();
		//创建表单对象
		HSSFSheet sheet = work.createSheet("工作表单");
		//创建新行
		HSSFRow row = sheet.createRow(0);
		//创建单元格
		HSSFCell cell0 = row.createCell(0);
		HSSFCell cell1 = row.createCell(1);
		//给单元格设置值
		cell0.setCellValue("学号");
		cell1.setCellValue("姓名");
		//给单元格设置样式
		HSSFCellStyle style = work.createCellStyle();
		style.setFillBackgroundColor(HSSFCellStyle.BORDER_DOTTED);
		cell0.setCellStyle(style);
		
		FileOutputStream stream = null;
		try 
		{
			stream = new FileOutputStream("e:\\text.xls");
			work.write(stream);
			stream.flush();
			
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		finally
		{
			if(stream!=null)
			{
				try {
					stream.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
		
		
		
	}

}


com.zuxia.yc42.servlet

——public class PoiServlet extends HttpServlet:

package com.zuxia.yc42.servlet;

import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.zuxia.yc42.po.UserInfo;
import com.zuxia.yc42.util.ExportExcel;

public class PoiServlet extends HttpServlet {

	private ExportExcel exportExcel;
	
	public PoiServlet()
	{
		exportExcel = new ExportExcel();
	}
	
	public void doPost(HttpServletRequest request,HttpServletResponse response)
	{
		String[] headers = {"编号","用户名","年龄","性别"};
		List<UserInfo> dataset = new ArrayList<UserInfo>();
		UserInfo usInfo1 =new UserInfo();
		usInfo1.setUsId(1);
		usInfo1.setUsName("小强");
		usInfo1.setUsAge(18);
		usInfo1.setUsSex("女");
		UserInfo usInfo2 =new UserInfo();
		usInfo2.setUsId(2);
		usInfo2.setUsName("小明");
		usInfo2.setUsAge(20);
		usInfo2.setUsSex("男");
		dataset.add(usInfo1);
		dataset.add(usInfo2);
		
		response.setContentType("octets/stream");

	  	response.addHeader("Content-Disposition", "attachment;filename=test.xls");
	  	
	  	OutputStream out = null;
	  	try 
	  	{
	  		out = response.getOutputStream();
			//exportExcel.exportExcel(out);
	  		exportExcel.exportExcel(headers, dataset, out);
			out.flush();
			System.out.println("excel导出成功!");
		} 
	  	catch (IOException e) 
		{
			e.printStackTrace();
		}
	  	finally
	  	{
	  		if(out!=null)
	  		{
	  			try {
					out.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
	  		}
	  	}


	}

	public void doGet(HttpServletRequest request,HttpServletResponse response)
	{
		doPost(request,response);
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值