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. 借助svn进行半自动多台服务器上线部署

    传统简单保留 如果web服务器就那么几台,大致可以在测试服务器上测试好以后,直接在正式的web服务器 压缩拷贝一个,然后再覆盖下,进行简单暴力的发布. 这种纯手工发布往往会带来几个问题 压缩一不小心把 ...

  2. Js~对数组的操作

    在工作中可能用的不多,但一些特殊的场合还是会用到,所以在这里,把JS的数组操作总结一下,分享给大家! Array 对象 Array 对象用于在单个的变量中存储多个值. 创建 Array 对象的语法: ...

  3. Python爬虫-正则表达式基础

    import re #常规匹配 content = 'Hello 1234567 World_This is a Regex Demo' #result = re.match('^Hello\s\d\ ...

  4. TestDirector自定义管理:用户配置

    一.进入Customize 1.打开TD,点击TestDirector,进入登录界面,在TD登录页面右上角点击“CUSTOMIZE(自定义)”. 2.选择要登录的域和项目,输入用户帐号和密码,点击确定 ...

  5. 修改input中的placeholder属性的颜色

    input::-webkit-input-placeholder{ color:#e8e8e8; } input::-moz-placeholder{ /* Mozilla Firefox 19+ * ...

  6. 【C#】Lamada表达式演变过程

    static void Main() { //第一步 委托实例调用 Func<string, int> test = new Func<string, int>(getLeng ...

  7. C++运算符重载规则

    运算符重载时要遵循以下规则:  ( 1 ) 除了类属关系运算符 " . " .成员指针运算符 " .* " .作用域运算符 " :: " . ...

  8. 长沙理工大学第十二届ACM大赛-重现赛 G - 跑路ing

    题目描述 vigoss18 辞职成功终于逃出了公司,但是没过太久,公司就发现vigoss18 的所作所为,于是派人来把他抓 回去. vigoss18 必须一直跑路,躲避公司的围捕.可以抽象的看成一个有 ...

  9. quartz定时任务,已过期的内容自动下线

    概念: Quartz是一个开源的作业调度框架,可以让计划的程序任务一个预定义的日期和时间运行.Quartz可以用来创建简单或复杂的日程安排执行几十,几百,甚至是十万的作业数. 框架架构: 简单实例: ...

  10. Ubuntu下查看软件版本及安装位置

    查看软件版本: XXX --version 或 aptitude show xxx 也可用apt-show-versions (要先安装sudo apt-get install apt-show-ve ...