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 ;
}

HSSFWorkbook 创建Excel文件的更多相关文章

  1. Java Struts2 POI创建Excel文件并实现文件下载

    Java Struts2 POI创建Excel文件并实现文件下载2013-09-04 18:53 6059人阅读 评论(1) 收藏 举报 分类: Java EE(49) Struts(6) 版权声明: ...

  2. NPOI 2.0 创建Excel文件

    如果只是简单的处理的话,只需要引用下载压缩包里的 NPOI.dll (office 2003)或 NPOI.OOXML.dll (office 2007) 文件而已. using System; us ...

  3. C#创建Excel文件并将数据导出到Excel文件

    工具原料: Windows 7,Visual Studio 2010, Microsoft Office 2007 创建解决方案 菜单>新建>项目>Windows窗体应用程序: 添加 ...

  4. Jxl创建Excel文件和解析Excel文件

    import java.io.File; import jxl.Workbook; import jxl.write.Label; import jxl.write.WritableSheet; im ...

  5. l创建Excel文件

    最近的项目中遇到需要将List<Map<String,String>>存储到Excel文件中,为满足此需求设计实现了如下函数: /** * 将MapList转化为Excel文件 ...

  6. java使用poi创建excel文件

    import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.HSSFRow;import or ...

  7. 读取并创建excel文件(.xls)

    第三方库,附件 缺点:该库只支持.xls文件的操作 1.读取excel文件 例子: try { /** * 后续考虑问题,比如Excel里面的图片以及其他数据类型的读取 **/ InputStream ...

  8. 在自定义目录下,按日期创建excel文件

    在指定文件目录下,新建以当前日期命名的excel 文件,如果文件已经存在,在文件中新建一个sheet页来存放数据 import datetime import xlrd, xlwt import re ...

  9. Creating Excel files with Python and XlsxWriter(通过 Python和XlsxWriter来创建Excel文件(xlsx格式))

    以下所有内容翻译至: https://xlsxwriter.readthedocs.io/ #----------------------------------------------------- ...

随机推荐

  1. JavaWeb知识回顾-Servlet常用类、接口及其方法

    今天主要把servlet的一些常用的类.接口和方法简单回顾一下. javax.servlet包 1.javax.servlet.Servlet接口 接口用于开发servlet,所有的servlet都要 ...

  2. 关于WordPress登录后跳转到指定页面

    前面在写模版的时候,有朋友要求网站登录后要跳转的到指定的页面.这个从前还真没遇到过.于是就用万能的搜索(很少百度)找了下,方法基本上就是一个,代码如下: <?php    // Fields f ...

  3. 关于为什么某些C/C++环境下浮点数可以“正常”比较的问题

    有师妹问浮点数比较的问题,然后有人展示了可以“正常”比较的例子,google了一堆东西如下,有空仔细读一读,整理整理 http://bytes.com/topic/c/answers/629184-p ...

  4. 【58沈剑架构系列】DB主从一致性架构优化4种方法

    需求缘起 大部分互联网的业务都是“读多写少”的场景,数据库层面,读性能往往成为瓶颈.如下图:业界通常采用“一主多从,读写分离,冗余多个读库”的数据库架构来提升数据库的读性能. 这种架构的一个潜在缺点是 ...

  5. JS 数据类型转换以其他

    JavaScript 是一种弱类型的语言,也就是没有类型限制,变量可以随时被赋予任意值. 同时,在程序运行过程中,类型会被自动确认的.因此,这就是涉及到数据的类型转换.在 JS 的世界中,数据类型转换 ...

  6. BASH 的调试技巧

    平时在写 BASH 脚本时,总是会碰到让人抓狂的 BUG.和 C/C++ 这么丰富的调试工具相比,BASH 又有什么调试手段呢? 1 echo/print (普通技) 打印一些变量,或者提示信息.这应 ...

  7. Java导出数据生成Excel表格

    事先准备: 工具类: package com.wazn.learn.util.export; import java.sql.Connection; import java.sql.DriverMan ...

  8. c++入门笔记

    对于有java基础的人来说,学习c++并不难,毕竟c++是java的前身. 何况还熟练掌握了java呢,哈哈. 安装gcc环境,照着菜鸟教程来. 开发工具ide使用vs,eclipse虽然用习惯了,这 ...

  9. JAVAEE学习——hibernate04:查询种类、HQL、Criteria、查询优化和练习为客户列表增加查询条件

    一.查询种类 1.oid查询-get 2.对象属性导航查询 3.HQL 4.Criteria 5.原生SQL 二.查询-HQL语法 //学习HQL语法 public class Demo { //基本 ...

  10. RxSwift 系列(二)

    前言 Subject是一个代理,它既是Observer,也是Observable.因为它是一个Observer,它可以订阅一个或多个Observable;因为它是一个Observable,它又可以被其 ...