FileOutputStream stream = null;
try {
//定义EXCEL第一行标题
String title = "资产管理";
//创建英文和中文键值对集合
Map<String, String> ecMap = new HashMap<String, String>();
//创建英文键值对集合
List<String> eList = new ArrayList();
//遍历通过sql查询到的值进行遍历,这个值是字段名字和注释
for (Map map : list) {
//取英文
eList.add(map.get("COLUMN_NAME").toString());
//取键:英文 和 值:中文注释字段
ecMap.put(map.get("COLUMN_NAME").toString(), map.get("COMMENTS").toString());
}
//创建workbook这个操作excel的
HSSFWorkbook workbook = new HSSFWorkbook();
//通过workbook创建sheet,sheet就是excel的当前页(并且放入标题)
HSSFSheet sheet = workbook.createSheet(title);
//通过workbook规范字体
HSSFFont ztFont = workbook.createFont();
ztFont.setBoldweight(ztFont.BOLDWEIGHT_BOLD);
HSSFCellStyle cellStyle =workbook.createCellStyle();
cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
//最后确定样式
cellStyle.setFont(ztFont);
//创建第一行表头,当然通过sheet创建了,因为sheet是第一页
//里面的(0)代表的索引,第一页东西
HSSFRow row = sheet.createRow(0);
//取第一行的索引
HSSFCell cell = row.createCell(0);
//赋值
cell.setCellValue(title);
//改变样式
cell.setCellStyle(cellStyle);
//创建合并单元格
Region region = new Region(0,new Short("0"),0,new Short(""+(ecMap.size()-1)));
//调出sheet方法把已经合并好的单元格添加进去
sheet.addMergedRegion(region);
HSSFRow row2 = sheet.createRow(1);
//创建第二行,把中文注释的字段放入第二行
for (int i = 0; i < eList.size(); i++) {
HSSFCell hssfCell = row2.createCell(i);
//这段代码就是把值赋到里面,调用ecMap中文和英文键值,取elist的第几行就是ecMap第几个值
hssfCell.setCellValue(ecMap.get(eList.get(i).toString()));
}
//添加数据
for (int i = 0; i <dateList.size(); i++) {
row = sheet.createRow(i+2);
Map map = dateList.get(i);
for (int j = 0; j < eList.size(); j++) {
String colName = eList.get(j);
HSSFCell cell2 = row.createCell(j);
if(ecMap.get(colName).equals("购买日期")){
//运用三目进行判断,如果该字段厘米那的数据没有,则为null,否则就用该数据
cell2.setCellValue(map.get(colName)==null?"":map.get(colName).toString().substring(0,10));
}else{
//运用三目进行判断,如果该字段厘米那的数据没有,则为null,否则就用该数据
cell2.setCellValue(map.get(colName)==null?"":map.get(colName).toString());
}
}
}
//创建数据流,把改好的数据放入excel中
stream = new FileOutputStream("D:\\资产管理模版.xls");
//使用workbook写入
workbook.write(stream);
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
stream.flush(); stream.close(); } catch (IOException e) { e.printStackTrace(); } } }
//查询的集合
List<Map> list = selectDataService.queryForList("select a.column_name,a.comments from user_col_comments a where a.table_name =\'T_ASSET\' and a.comments is not null");
List<Map> dateList = selectDataService.queryForList
(" select a.id \"id\",a.num \"num\",a.name \"name\",t.name \"typeid\",a.status \"status\" ,a.buydate \"buydate\",u.realname \"userid\",a.price \"price\",w.name \"factory\",a.content \"content\" from t_asset a ,t_assettype t ,t_factory w,t_user u where a.typeid = t.id(+) and a.factory = w.id(+) and a.userid = u.id(+) ");