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 ;
}
HSSFWorkbook 创建Excel文件的更多相关文章
- Java Struts2 POI创建Excel文件并实现文件下载
Java Struts2 POI创建Excel文件并实现文件下载2013-09-04 18:53 6059人阅读 评论(1) 收藏 举报 分类: Java EE(49) Struts(6) 版权声明: ...
- NPOI 2.0 创建Excel文件
如果只是简单的处理的话,只需要引用下载压缩包里的 NPOI.dll (office 2003)或 NPOI.OOXML.dll (office 2007) 文件而已. using System; us ...
- C#创建Excel文件并将数据导出到Excel文件
工具原料: Windows 7,Visual Studio 2010, Microsoft Office 2007 创建解决方案 菜单>新建>项目>Windows窗体应用程序: 添加 ...
- Jxl创建Excel文件和解析Excel文件
import java.io.File; import jxl.Workbook; import jxl.write.Label; import jxl.write.WritableSheet; im ...
- l创建Excel文件
最近的项目中遇到需要将List<Map<String,String>>存储到Excel文件中,为满足此需求设计实现了如下函数: /** * 将MapList转化为Excel文件 ...
- java使用poi创建excel文件
import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.HSSFRow;import or ...
- 读取并创建excel文件(.xls)
第三方库,附件 缺点:该库只支持.xls文件的操作 1.读取excel文件 例子: try { /** * 后续考虑问题,比如Excel里面的图片以及其他数据类型的读取 **/ InputStream ...
- 在自定义目录下,按日期创建excel文件
在指定文件目录下,新建以当前日期命名的excel 文件,如果文件已经存在,在文件中新建一个sheet页来存放数据 import datetime import xlrd, xlwt import re ...
- Creating Excel files with Python and XlsxWriter(通过 Python和XlsxWriter来创建Excel文件(xlsx格式))
以下所有内容翻译至: https://xlsxwriter.readthedocs.io/ #----------------------------------------------------- ...
随机推荐
- Codeforces Round #278 (Div. 1) B - Strip dp+st表+单调队列
B - Strip 思路:简单dp,用st表+单调队列维护一下. #include<bits/stdc++.h> #define LL long long #define fi first ...
- qrcode 生成二维码
qrcode 生成二维码 Demo: https://www.hgnulb.cn/freedom/qrcode/qrcode.html qrcodeGithub 地址: https://github. ...
- HTML5实战与剖析之原生拖拽(一拖拽历史概述)
提起拖拽,我就想起了在JavaScript培训的时候一个非常好玩的效果,那就是拖拽了.可以用鼠标任意拖拽着一个物体到任何你想去的地方. 最早拥有JavaScript拖拽功能的是IE4浏览器.当时,网页 ...
- thinkphp5.0配置加载
ThinkPHP支持多种格式的配置格式,但最终都是解析为PHP数组的方式. PHP数组定义 返回PHP数组的方式是默认的配置定义格式,例如: //项目配置文件 return [ // 默认模块名 'd ...
- 转:php防止sql注入的一点心得
转:http://blog.csdn.net/sky_zhe/article/details/9702489 转:http://zhangxugg-163-com.iteye.com/blog/183 ...
- Android中由Handler和内部类引起的内存泄漏
原文地址:http://johnnyshieh.github.io/android/2015/09/03/android-handler-memory-leak/ 在Android中我们经常用Hand ...
- 【Python初级】由判定回文数想到的,关于深浅复制,以及字符串反转的问题
尝试用Python实现可以说是一个很经典的问题,判断回文数. 让我们再来看看回文数是怎么定义的: 回数是指从左向右读和从右向左读都是一样的数,例如1,121,909,666等 解决这个问题的思路,可以 ...
- struct模块-黏包的解决方法
黏包的解决方案 解决方案一 问题的根源在于,接收端不知道发送端将要传送的字节流的长度,所以解决粘包的方法就是围绕,如何让发送端在发送数据前,把自己将要发送的字节流总大小让接收端知晓,然后接收端来一个死 ...
- FastReport.Net使用:[23]图表(Chart)控件
图表基本设置 1.拖放一个图表控件到报表设计界面中. 2.右键菜单“编辑”或者双击图表进入图表编辑器 3.将原有的簇状柱状图删除,添加圆环图 4.绑定数据源,并且指定X,Y轴数据. X轴数据为科目名称 ...
- 【UOJ 117】欧拉回路
#117. 欧拉回路 有一天一位灵魂画师画了一张图,现在要你找出欧拉回路,即在图中找一个环使得每条边都在环上出现恰好一次. 一共两个子任务: 这张图是无向图.(50分) 输入格式 第一行一个整数 t, ...