/**
* 导出并合并单元格
* 2011-11-7
* @param list
* @param fields
* @param values
* @param sheetName
* @return
* HSSFWorkbook
* Yang,Hualong
*/
public static HSSFWorkbook GenerateExcelAndMerged( List<HashMap<String,Object>> list,
String[] fields, String[] values,String sheetName) {
String flag = "false"; // 设置开关
try {
HSSFWorkbook wb = new HSSFWorkbook(); // 声明一个工作薄
HSSFSheet sheet = wb.createSheet(sheetName);// 声明一个表
HSSFRow row = null; // 声明行
HSSFCell cell = null;// 声明单元
// 创建表头,第一行为0
row = sheet.createRow(0);
for (int i = 0; i < values.length; i++) {
cell = row.createCell(i); // 创建标题
cell.setCellValue(values[i]);// 写入标题
}
Map<String, Object> map = null;
// 写入标题和内容
for (int rowindex = 0; rowindex < list.size(); rowindex++) {
row = sheet.createRow(rowindex + 1); // 从第二行开始
map = list.get(rowindex); // 集合数据写入对象
//出来第一列
for (int i = 0; i < fields.length; i++) {
Object value=map.get(fields[i]);//0 1 2 3
cell = row.createCell(i);// 创建内容
if (map.get(fields[i]) instanceof Double) {
if(Double.parseDouble(String.valueOf(map.get(fields[i])))==-1d){
cell.setCellValue("----");
}else{
Double f = Math.round(Double.parseDouble(map.get(
fields[i]).toString()) * 100) / 100.0;
cell.setCellValue(f + "%");
}
} else if (map.get(fields[i]) instanceof Date) {
Date date = (Date) map.get(fields[i]);
SimpleDateFormat sdf = new SimpleDateFormat(
"yyyy-MM-dd");
cell.setCellValue(String.valueOf(sdf.format(date)));
} else {
cell.setCellValue(String.valueOf(map.get(fields[i]))); // 设置单元格的值
}
//判断当前值是否与其 上一行同一列的值相同,相同则合并
if(rowindex>0 && value.equals(sheet.getRow(rowindex).getCell(i).getStringCellValue())){
sheet.addMergedRegion(new CellRangeAddress(rowindex, rowindex+1, 0, 0));
}
}
}
return wb;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}