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. 洛谷 P2036 Perket 题解

    题目传送门 这道题可以使用dfs深搜实现,在每次递归深搜时要更新ans. #include<bits/stdc++.h> using namespace std; ,s=,b; ]; st ...

  2. PHP原理之变量

    作者: Laruence(   ) 本文地址: http://www.laruence.com/2008/08/22/412.html 转载请注明出处 或许你知道,或许你不知道,PHP是一个弱类型,动 ...

  3. Ubuntu 如何更换阿里源

    #进入源地址 cd /etc/apt #备份源文件 sudo cp sources.list sources.list.bak #编辑 sudo vim /etc/apt/sources.list d ...

  4. SSM demo :投票系统

    框架: Spring SpringMVC MyBatis 题目: 投票系统 导包: 1, spring 2, MyBatis 3, mybatis-spring 4, fastjson 5, aspe ...

  5. Bzoj2152/洛谷P2634 聪聪可可(点分治)

    题面 Bzoj 洛谷 题解 点分治套路走一波,考虑\(calc\)函数怎么写,存一下每条路径在\(\%3\)意义下的路径总数,假设为\(tot[i]\)即\(\equiv i(mod\ 3)\),这时 ...

  6. FFTW3学习笔记2:FFTW(快速傅里叶变换)中文参考

    据说FFTW(Fastest Fourier Transform in the West)是世界上最快的FFT.为了详细了解FFTW以及为编程方便,特将用户手册看了一下,并结合手册制作了以下FFTW中 ...

  7. WEB架构师成长之路 二

    法宝一:牛人爱惜自己的时间. 时间就是金钱,时间就是生命,时间如同健康一样,如果时间都没有,那成功也就是浮云了.所以牛人总是很爱惜自己的时间,总是在想办法提高自己的做事效率.我突然想了起来,我QQ里有 ...

  8. MySQL注射绕过技巧

    本次对以前注入的一些总结. 总有在注入的时候发现有waf或者对参数过滤了  ~~  做个文章记录下思路吧 ①.通过greatest函数绕过不能使用大小于符号的情况 我们在猜解单个字符时 通常会判断字符 ...

  9. [JOBDU1172]哈夫曼树

    题目大意: 给你一堆权值,求这些权值建成哈夫曼树后的WPL. 思路: 哈夫曼树的WPL等于各非叶子结点权值之和. 所以直接贪心模拟构建哈夫曼树的过程. 先把所有的权值放在一个堆中,然后每次取里面最小的 ...

  10. 2015 UESTC 搜索专题D题 基爷的中位数 二分

    基爷的中位数 Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/61 Descr ...