java导出excel文件

//action代码
public class BaseAction extends ActionSupport implements RequestAware,
		SessionAware, ApplicationAware, ParameterAware, ServletContextAware,
		ServletRequestAware, ServletResponseAware {
	@Autowired
	private HouseEntityManager houseEntityManager;
	protected Map<String, Object> requestMap;
	protected Map<String, Object> sessionMap;
	protected Map<String, Object> applicationMap;
	protected Map<String, String[]> parametersMap;

	protected HttpServletRequest request;
	protected HttpServletResponse response;
	protected ServletContext application;

	/**
	 * 导出数据库全部信息
	 */

	public void allToExcel() {
		houseEntityManager.allToExcel(response);
	}

	public void setRequest(Map<String, Object> arg0) {
		this.requestMap = arg0;
	}

	public void setSession(Map<String, Object> arg0) {
		this.sessionMap = arg0;
	}

	public void setApplication(Map<String, Object> arg0) {
		this.applicationMap = arg0;
	}

	public void setParameters(Map<String, String[]> arg0) {
		this.parametersMap = arg0;
	}

	public void setServletContext(ServletContext arg0) {
		this.application = arg0;
	}

	public void setServletRequest(HttpServletRequest arg0) {
		this.request = arg0;
	}

	public void setServletResponse(HttpServletResponse arg0) {
		this.response = arg0;
	}

}

/**
 * Creator: sunvsjay	
 * Create Time: 2012-9-3 上午11:21:24
 */
package com.sinosoft.service.house;

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

import javax.servlet.http.HttpServletResponse;

import jxl.Workbook;
import jxl.WorkbookSettings;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springside.modules.orm.Page;
import org.springside.modules.orm.PropertyFilter;
import org.springside.modules.security.springsecurity.SpringSecurityUtils;

import com.sinosoft.dao.house.ContractHouseDao;
import com.sinosoft.dao.house.HouseDao;
import com.sinosoft.entity.house.ContractHouse;
import com.sinosoft.entity.house.House;
import com.sinosoft.util.HouseConstant;
import com.sinosoft.util.JxlXlsWriter;

@Service
@Transactional
public class HouseEntityManager {

	/**
	 * 日志
	 */
	private static Logger logger = LoggerFactory
			.getLogger(HouseEntityManager.class);
	/**
	 * 房屋的Dao
	 */
	@Autowired
	private HouseDao houseDao;
	@Autowired
	private ContractHouseDao contractHouseDao;

	/**
	 * 删除房屋
	 * @param id
	 *            房屋Id
	 */
	public void delete(Long houseId) {
		if (houseId != null) {
			House house = houseDao.get(houseId);
			house.setDelFlag(HouseConstant.HOUSE_DELFLAG_Y);
			house.setOperDate(new Date());
			house.setOperId(SpringSecurityUtils.getCurrentUserName());
			houseDao.save(house);
		} else {
			logger.debug("houseId error");
		}
	}

	/**
	 * 获取房屋信息
	 * 
	 * @param id
	 *            房屋Id
	 * @return
	 */
	public House get(Long houseId) {
		return houseDao.get(houseId);
	}

	/**
	 * 保存房屋信息
	 * @param entity
	 *            房屋信息
	 */
	public void saveHouse(House entity) {
		logger.debug("save House");
		houseDao.save(entity);
	}

	/**
	 * 使用属性过滤条件查询用户.
	 * @param page
	 *            分页信息
	 * @param filters
	 *            过滤条件
	 * @return
	 */
	@Transactional(readOnly = true)
	public Page<House> searchHouse(final Page<House> page,
			final List<PropertyFilter> filters) {
		logger.debug("Search House");
		PropertyFilter filter = new PropertyFilter("EQS_delFlag",HouseConstant.HOUSE_DELFLAG_N);// 显示标志位N的未删除的
		filters.add(filter);
		return houseDao.findPage(page, filters);
	}

	/**
	 * 获取所有房屋信息
	 * @return
	 */
	@Transactional(readOnly = true)
	public List<House> getAllHouse() {
		return houseDao.getAll("houseId", true);
	}

	/**
	 * 获取部分住房
	 */
	public List<House> findHouseList(Long contractId) {

		List<House> houseList = new ArrayList<House>();
		// 查询等未售的
		List<House> waitList = houseDao.findBy("status", HouseConstant.HOUSE_HOUSE_STATUS_NO);
		houseList.addAll(waitList);
		// 如果id不为空,操作
		if (contractId != null) {
			// 查询已选的
			List<ContractHouse> contractHouseList = contractHouseDao.findBy(
					"id.contractId", contractId);// 查找唯一的条
			// 循环遍历
			// contractHouse就只是存id的
			for (ContractHouse contractHouse : contractHouseList) {
				houseList.add(houseDao.get(contractHouse.getId().getHouseId()));
			}
		}
		return houseList;
	}
	public List<House> getHouse(){
		return houseDao.getHouse();
	}

	//导出数据库全部信息到excel文件
	public void allToExcel(HttpServletResponse response) {
		//需要导出的数据
		List<House> list=houseDao.getHouse();
    //下载是显示给用户的文件名(如果是中文需要作一定处理,否则会有乱码)
		String fileName="all.xls";
		//调用导出的具体实现方法
		toExcel(list,fileName,response);
	}


	
	//导出的具体实现方法
	public void toExcel(List<House> list, String fileName, HttpServletResponse response) {
		try {
			//对文件名作处理,避免中文乱码问题
			String name = new String(fileName.getBytes("gbk"),"iso8859-1");
			//设置response相应属性,设置为下载
			response.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");
			response.setHeader("Content-Type", "application/force-download");
			response.setHeader("Content-Type", "application/octet-stream");
			response.setHeader("Content-Type", "application/download");
			response.setHeader("Cache-Control", "private, max-age=0, must-revalidate");
			response.setHeader("Pragma", "public");
			response.setHeader("Content-Disposition", "attachment; filename=\"" + name + "\"");		
			//获得response中的输出流
			OutputStream out=response.getOutputStream();//输出到页面上
//excel表格第一行标题,本例中不采用poi或jxl,只对每个单元属性后面添//加\t,每行结束加\n。这是excel文件的基本属性。
			String head="房屋地址\t房间数\t房屋面积\t使用面积\n";
			//编码应该根据本地编码来确定。如果是台湾同胞,这里需要改为big5
			out.write(head.getBytes("gbk"));
			for(House a:list){
		//加上\t,\n等分隔符,写出文件,当文件以.xls命名时,打开即为普通excel文件 
				String s=a.getAddress()+"\t"+a.getRoomsNum()+"\t"+a.getFloorArea()+"\t"+a.getUseArea()+"\n";
				out.write(s.getBytes("gbk"));
			}
			out.flush();
			out.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	
}


 

 

jsp页面

	<script type="text/javascript">
	function sure(){
	  if(window.confirm("你是否要下载")){
	  document.lastForm.action="base!allToExcel.action";
	  document.lastForm.submit();
	  }
	}
	</script>



<form name="lastForm">
	    <input type="button" id="btn" value="导出数据为excel" οnclick="sure()"/>
     </form>


 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值