HSSFWorkbook 创建Excel文件

1.项目代码实例

  

@Override
    public OutputStream exportAucLotData(String id, String password, OutputStream out) throws Exception {
        if (id == null)
            return null;
        if (StringUtils.isBlank(password))
            password = "123456";
        if (out == null)
            return null;
        AucLot lot=    aucLotRepository.findOne(id);
        if(lot==null)
            return null;
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        List<Object> sheet1 =sheet1Data(lot,sdf);//标题下面的数据
List
<AucPrice> ps=aucPriceRepository.findAllByAucLotIdOrderByIdDesc(lot.id()); List<Object> sheet2 =sheet2Data(sdf, ps); List<AucBrand> bs=aucBrandRepository.findAllByAucLotIdOrderByCrtTimeDesc(lot.id()); List<Object> sheet3 = sheet3Data(sdf, bs); logger.debug(sheet1.toString()); logger.debug(sheet2.toString()); logger.debug(sheet3.toString()); HSSFWorkbook book = new HSSFWorkbook(); book = createExcel(book, sheet1Heads(), sheet1Fileds(), sheet1, "拍卖信息"); book = createExcel(book, sheet2Heads(), sheet2Fileds(), sheet2, "出价信息"); book = createExcel(book, sheet3Heads(), sheet3Fileds(), sheet3, "报名信息"); File tempFile=File.createTempFile("temp",".xls"); tempFile.deleteOnExit(); OutputStream tempout = new FileOutputStream(tempFile); book.write(tempout);

    //下载Excel ,打开的时候进行加密处理 EncryptExcellUtil.encrypt(tempFile,password, out); logger.debug(
"-----excel 文档加密 ok-----------"); return out; }

2.设置表格的题头

private static List<String>  sheet1Heads(){
        List<String> heads = new ArrayList<String>();
        heads.add("标的内部代码");
        heads.add("拍卖名称");
        heads.add("标的大类名称");
        heads.add("拍卖开始时间");
        heads.add("拍卖结束时间");
        heads.add("保证金");
        heads.add("拍卖模式");
        heads.add("上拍阶段");
        heads.add("拍卖状态");
        heads.add("发布状态");
        heads.add("所属机构");
        heads.add("城市名称");        
        return  heads;
    }

3.获取题头下面对应的数据

private  List<Object>   sheet1Data(AucLot lot,SimpleDateFormat sdf){
        List<Object> data = new ArrayList<Object>();
        Map<String, String> map = new HashMap<String, String>();
        List<String> key = sheet1Fileds();
        map.put(key.get(0), lot.goodsNo());// goodsNo
        map.put(key.get(1), lot.goodsName());// goodsName
        map.put(key.get(2), lot.firstTypeName());// firstTypeName
        map.put(key.get(3), (lot.startTime() != null) ? sdf.format(lot.startTime()) : "");// startTime
        map.put(key.get(4), (lot.endTime() != null) ? sdf.format(lot.endTime()) : "");// endTime
        map.put(key.get(5), (lot.bail() != null) ? lot.bail().toString() : "");// bail
        map.put(key.get(6), (lot.type() == 1) ? "网络拍" : (lot.type() == 2 ? "同步拍" : ""));
        map.put(key.get(7), stage(lot.stage()));// stage
        map.put(key.get(8), status(lot.status()));// status
        map.put(key.get(9), (lot.isPublished() == 1) ? "未发布" : "已发布");// isPublished
        map.put(key.get(10), agencyName(lot.agencyId()));// agencyId to name
        map.put(key.get(11), lot.cityName());// cityName
        data.add(map);
        return data;
    }

4.???

private static List<String>  sheet1Fileds(){
        List<String> fileds = new ArrayList<String>();
        fileds.add("goodsNo");
        fileds.add("goodsName");
        fileds.add("firstTypeName");
        fileds.add("startTime");
        fileds.add("endTime");
        fileds.add("bail");
        fileds.add("type");
        fileds.add("stage");
        fileds.add("status");
        fileds.add("isPublished");
        fileds.add("agencyId");
        fileds.add("cityName");        
        return  fileds;
    }

5.创建Excel表格对象

public  HSSFWorkbook createExcel(HSSFWorkbook book,
            List<String> heads, List<String> fieldList, List<Object> dataList,String sheettName) {
        HSSFWorkbook  workbook = book;
        if(workbook ==null)
            workbook= new HSSFWorkbook();
        
        if(sheettName==null||"".equals(sheettName))
            sheettName="sheet"+Math.random();
        
        HSSFSheet sheet = workbook.createSheet(sheettName); //
        sheet.setDefaultColumnWidth(20);  
        sheet.setDefaultRowHeightInPoints(20);
        // 在索引0的位置创建行(最顶端的行)
        HSSFRow row = sheet.createRow(0);
        HSSFCell cell=null;

//创建表格第一行的标题
for (int i = 0; i < heads.size(); i++) { // 在索引0的位置创建单元格(左上端) cell = row.createCell(i); // 定义单元格为字符串类型 cell.setCellType(HSSFCell.CELL_TYPE_STRING); // 在单元格中输入一些内容 cell.setCellValue(heads.get(i)); }

    //循环赋值
for (int n = 0; n < dataList.size(); n++) { // 在索引1的位置创建行(最顶端的行) HSSFRow row_value = sheet.createRow(n + 1); Map<String, String> dataMap =(Map<String, String>)dataList.get(n); HSSFCell cell_v=null; for (int i = 0; i < fieldList.size(); i++) { // 在索引0的位置创建单元格(左上端) cell_v = row_value.createCell(i); // 定义单元格为字符串类型 cell_v.setCellType(HSSFCell.CELL_TYPE_STRING); // 在单元格中输入一些内容 cell_v.setCellValue(dataMap.get(fieldList.get(i))); } } return workbook ; }
原文地址:https://www.cnblogs.com/mr-wuxiansheng/p/6399448.html