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. python datetime 时区(timezone) dateutil

    记录下python中的时区问题, 代码如下:  包括datetime.datetime对象使用不同的时区,以及在不同时区间转换. from datetime import datetime from ...

  2. php极速后台开发框架LotusAdmin

    组件:基于thinkphp5.0.12+layui2.1版本 演示站点:https://www.lotusadmin.top/账号 : admin密码:123456 官方QQ交流群:606645328 ...

  3. Web APi入门之基本操作(一)

    最近学习了下WebApi,WebApi是RESTful风格,根据请求方式决定操作.以博客的形式写出来,加深印象以及方便以后查看和复习. 1.首先我们使用VS创建一个空的WebApi项目 2.新建实体以 ...

  4. thinkphp5.0URL访问

    URL设计 ThinkPHP5.0在没有启用路由的情况下典型的URL访问规则是: http://serverName/index.php(或者其它应用入口文件)/模块/控制器/操作/[参数名/参数值. ...

  5. Python的环境搭建——万丈高楼平地起

    Python的环境搭建,远程连接,端口映射,虚拟机 写在正文之前 python语言的开发环境还是相对比较简单的,但是也是有很多需要注意的地方,对于初次接触python或者以前很少用到虚拟环境的朋友来说 ...

  6. ARM开发板搭建NFS网络文件共享方法

    前边 已经提到过吧vmare的IP改成了静态IP,对于上网来说,这个是个麻烦的事.现在重新配置Vmware的IP VMware-Edit-Virtual network editor 选择PC机的无线 ...

  7. nyoj 737 石子合并 经典区间 dp

    石子合并(一) 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述     有N堆石子排成一排,每堆石子有一定的数量.现要将N堆石子并成为一堆.合并的过程只能每次将相邻的两堆 ...

  8. stl upper_bound()

    http://blog.csdn.net/niushuai666/article/details/6734650   upper_bound( a , b , k )返回有序升序序列[a,b)中能放下 ...

  9. 20162325 金立清 S2 W8 C17

    20162325 2017-2018-2 <程序设计与数据结构>第8周学习总结 教材学习内容概要 二叉查找树是一棵二叉树,对于其中的每个结点,左子树上的元素小于父结点的值,而右子树上的元素 ...

  10. 20162304 实验一《Java开发环境的熟悉》实验报告

    Linux基础与Java开发环境 实验内容 1.熟悉Linux基础操作: 2.使用JDK编译.运行简单的Java程序: 实验要求 1.学习<Linux基础入门(新版)> 2.完成实验.撰写 ...