poi导出

package com.pingan.zt.pamm.ordermanage.utils;

import java.util.List;

import org.apache.commons.beanutils.BeanUtils;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
public class ExcelUtil {
  private ExcelUtil() {}
  /**
   * 导出excel头部标题
   * @param title
   * @param cellRangeAddressLength
   * @return
   */
  public static HSSFWorkbook createWorkbook(String title){
    HSSFWorkbook workbook = new HSSFWorkbook();
    HSSFCellStyle styleTitle = createStyle(workbook, (short)16);
    HSSFSheet sheet = workbook.createSheet(title);
    sheet.setDefaultColumnWidth(25);
    HSSFRow rowTitle = sheet.createRow(0);
    HSSFCell cellTitle = rowTitle.createCell(0);
    cellTitle.setCellStyle(styleTitle);
    return workbook;
  }
  /**
   * 设定二级标题
   * @param workbook
   * @param secondTitles
   * @return
   */
  public static HSSFWorkbook makeSecondHead(HSSFWorkbook workbook, String[] secondTitles){
    // 创建用户属性栏
    HSSFSheet sheet = workbook.getSheetAt(0);
    HSSFRow rowField = sheet.createRow(0);
    HSSFCellStyle styleField = createStyle(workbook, (short)13);
    for (int i = 0; i < secondTitles.length; i++) {
      HSSFCell cell = rowField.createCell(i);
      cell.setCellValue(secondTitles[i]);
      cell.setCellStyle(styleField);
    }
    return workbook;
  }
  /**
   * 插入数据
   * @param workbook
   * @param dataList
   * @param beanPropertys
   * @return
   */
  public static <T> HSSFWorkbook exportExcelData(HSSFWorkbook workbook, List<T> dataList, String[] beanPropertys) throws Exception{
    HSSFSheet sheet = workbook.getSheetAt(0);
    // 填充数据
    HSSFCellStyle styleData = workbook.createCellStyle();
    styleData.setAlignment(HSSFCellStyle.ALIGN_CENTER);
    styleData.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
    for (int j = 0; j < dataList.size(); j++) {
      HSSFRow rowData = sheet.createRow(j + 1);
      T t = dataList.get(j);
      for(int k=0; k<beanPropertys.length; k++){
        Object value = BeanUtils.getProperty(t, beanPropertys[k]);
        HSSFCell cellData = rowData.createCell(k);
        String valueStr = value != null ? value.toString() : "";
        cellData.setCellValue(valueStr);
        cellData.setCellStyle(styleData);
      }
    }
    return workbook;
  }
  /**
   * 通用的读取excel单元格的处理方法
   * @param cell
   * @return
   */
  private static Object getCellValue(Cell cell) {
    Object result = null;
    if (cell != null) {
      switch (cell.getCellType()) {
      case Cell.CELL_TYPE_STRING:
        result = cell.getStringCellValue();
        break;
      case Cell.CELL_TYPE_NUMERIC:
        //对日期进行判断和解析
        if(HSSFDateUtil.isCellDateFormatted(cell)){
          double cellValue = cell.getNumericCellValue();
          result = HSSFDateUtil.getJavaDate(cellValue);
        }
        break;
      case Cell.CELL_TYPE_BOOLEAN:
        result = cell.getBooleanCellValue();
        break;
      case Cell.CELL_TYPE_FORMULA:
        result = cell.getCellFormula();
        break;
      case Cell.CELL_TYPE_ERROR:
        result = cell.getErrorCellValue();
        break;
      case Cell.CELL_TYPE_BLANK:
        break;
      default:
        break;
      }
    }
    return result;
  }
  /**
   * 提取公共的样式
   * @param workbook
   * @param fontSize
   * @return
   */
  private static HSSFCellStyle createStyle(HSSFWorkbook workbook, short fontSize){
    HSSFCellStyle style = workbook.createCellStyle();
    style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
    style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
    // 创建一个字体样式
    HSSFFont font = workbook.createFont();
    font.setFontHeightInPoints(fontSize);
    font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
    style.setFont(font);
    return style;
  }
}

  

使用:

/**
	 * 待发货订单导出excel
	 * @param request
	 * @return
	 */
	@RequestMapping(value = "/sendOrderListExportToExcel.do")
	public void sendOrderListExportToExcel(HttpServletRequest request,HttpServletResponse response) throws Exception {
		Map<String, Object> allPara = new HashMap<String, Object>();
		try {
			String merchantId = request.getParameter("merchantId");
			int pageNumber = Integer.parseInt(request.getParameter("pageNum"));
			int pageSize = Integer.parseInt(request.getParameter("pageSize"));
			String startDate = request.getParameter("startDate");
			String endDate = request.getParameter("endDate");
			List<String> allStates = new ArrayList<String>();
			allStates.add(OrderManageService.pay_succeed_state);
			allPara.put("state", allStates);
			pageNumber = (pageNumber - 1) * pageSize;
			allPara.put("merchantId", Long.parseLong(merchantId));
			allPara.put("pageNum", pageNumber);
			allPara.put("pageSize", pageSize);
			allPara.put("startDate", startDate);
			allPara.put("endDate", endDate);
			List<OrderVo> allOrderVos = sendServiceImpl.getSendList(allPara);

			HSSFWorkbook workbook = ExcelUtil.createWorkbook("待发货订单");
		    String[] secondTitles = {"订单号", "快递公司", "快递单号"};
		    workbook = ExcelUtil.makeSecondHead(workbook, secondTitles);
		    String[] beanProperty = {"orderId","goodFlowType","goodFlowNum"};
		    workbook = ExcelUtil.exportExcelData(workbook, allOrderVos, beanProperty);
		    workbook.write(response.getOutputStream());

		    //输出Excel文件.
			response.setContentType("application/vnd.ms-excel;charset=UTF-8");
			//中文文件名支持
			String encodedfileName = new String("data".getBytes("UTF-8"), "UTF-8");

			response.setHeader("Content-Disposition", "attachment; filename=\"" + encodedfileName + ".xls\"");
			workbook.write(response.getOutputStream());
			response.getOutputStream().flush();

		} catch (Exception e) {
			String msg = "导出订单列表excel异常";
			logger.error(msg,e);
			throw new Exception(msg,e);
		}
	}

  

时间: 2024-08-25 06:02:25

poi导出的相关文章

使用Apache POI导出Excel小结--导出XLS格式文档

使用Apache POI导出Excel小结 关于使用Apache POI导出Excel我大概会分三篇文章去写 使用Apache POI导出Excel小结--导出XLS格式文档 使用Apache POI导出Excel小结--导出XLSX格式文档 使用Apache POI导出Excel--大数量导出 导出XLS格式文档 做企业应用项目难免会有数据导出到Excel的需求,最近在使用其,并对导出Excel封装成工具类开放出来供大家参考.关于Apache POI Excel基本的概念与操作我在这里就不啰嗦

POI导出EXCEL经典实现

在web开发中,有一个经典的功能,就是数据的导入导出.特别是数据的导出,在生产管理或者财务系统中用的非常普遍,因为这些系统经常要做一些报表打印的工作.而数据导出的格式一般是EXCEL或者PDF,我这里就用两篇文章分别给大家介绍下.(注意,我们这里说的数据导出可不是数据库中的数据导出!么误会啦^_^) 呵呵,首先我们来导出EXCEL格式的文件吧.现在主流的操作Excel文件的开源工具有很多,用得比较多的就是Apache的POI及JExcelAPI.这里我们用Apache POI!我们先去Apach

POI导出EXCEL经典实现(转)

http://www.cnblogs.com/xwdreamer/archive/2011/07/20/2296975.html 1.Apache POI简介 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程式对Microsoft Office格式档案读和写的功能. .NET的开发人员则可以利用NPOI (POI for .NET) 来存取 POI 的功能. 2.POI结构 HSSF - 提供读写Microsoft Excel XLS格式档案的功能.XS

JAVA代码实现嵌套层级列表,POI导出嵌套层级列表

要实现POI导出EXCEL形如 --A1(LV1) ----B1(LV2) ----B2(LV2) ------C1(LV3) ------C2(LV3) ----B3(LV2) --A1(LV1) 一.能用到的数据字段 ID(主键).PID(父科目ID).NAME(名称).LEVEL(当前层级) 二.思路: 定义一个空的科目列表用来存放已经排好序的科目.创建一个迭代器传入父节点查出它的所有子节点,遍历子节点插入到科目列表的同时再次调用这个迭代器,这样程序能够在插入一个节点后如果发现有子节点继续

JAVA关于POI导出Excel内存溢出的解决方案

JAVA关于POI导出Excel内存溢出的解决方案 在我们使用JAVA开发过程中,经常要导出查询获得的数据,这些数据一般情况下都是以Excel存储的,因此我们在导出数据的时候要使用JAVA的POI库,其主要是对各种windows平台的数据格式进行操作,在这里,我们是对Excel操作. 生成Excel的过程原理是这样的,首先,我们对数据库进行查询,获取相应的结果集,一般是list集合,然后生成Workbook对象,根据生成的Workbook对象获取sheet对象,根据此sheet对象获取Row对象

用POI导出excel时,较长的数字不想被自动变为科学计数法的解决方式(转)

做过很多次导出excel了.都碰到一个问题,内容里如果包含一个比较长的数字,比如订单号“2546541656596”,excel会自动变成科学计数法... 弄过好几次都没有解决,最近又要导出excel了,下决心一定要找到解决办法 自己在excel里测试过,较长的数字,都会自动变成科学计数法,除非我们把单元格格式设置成“文本型” 哈哈,似乎找到了思路:用poi先把单元格设置成“文本型”就可以了把. 从文档里找到了这个方法HSSFCell.setCellType(int type),怎么看这个方法都

poi导出excel

Java使用poi组件导出excel报表,能导出excel报表的还可以使用jxl组件,但jxl想对于poi功能有限,jxl应该不能载excel插入浮动层图片,poi能很好的实现输出excel各种功能,介绍poi导出excel功能实现案例,算比较常用的功能实现以及导出excel需要注意的地方,采用的是poi-3.8-20120326.jar,poi-ooxml-3.8-20120326.jar,poi-scratchpad-3.8-20120326.jar 输出表格 poi输出excel最基本是输

Java POI 导出EXCEL经典实现 Java导出Excel弹出下载框

在web开发中,有一个经典的功能,就是数据的导入导出.特别是数据的导出,在生产管理或者财务系统中用的非常普遍,因为这些系统经常要做一些报表打印的工作.而数据导出的格式一般是EXCEL或者PDF,我这里就用两篇文章分别给大家介绍下.(注意,我们这里说的数据导出可不是数据库中的数据导出!么误会啦^_^) 呵呵,首先我们来导出EXCEL格式的文件吧.现在主流的操作Excel文件的开源工具有很多,用得比较多的就是Apache的POI及JExcelAPI.这里我们用Apache POI!我们先去Apach

使用poi导出Excel

很多时候,一个软件应用程序需要生成Microsoft Excel文件格式的报告.有时,一个应用程序甚至希望将Excel文件作为输入数据. 常见的java Excel  API Java Aspose Cells Java Aspose Cells 是一种纯粹的Java授权的Excel API,开发和供应商Aspose发布.这个API的最新版本是8.1.2,发布于2014年7月,是一个丰富而厚重的API(普通Java类和AWT类的组合)设计,可以读.写和操纵电子表格Excel的组件.此API常见用

POI导出EXCEL文档

package com.wiseweb.util.excel; import java.io.*; import java.util.*; import javax.swing.JOptionPane; import org.apache.poi.hssf.usermodel.*; import org.apache.poi.hssf.util.HSSFColor; import com.wiseweb.pom.entity.BaiinfoPriceTime; public class Expo