首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

poi导出 合拢单元格

2012-09-19 
poi导出 合并单元格/**??? ?* 导出并合并单元格??? ?* 2011-11-7??? ?* @param list??? ?* @param fields?

poi导出 合并单元格

/**
??? ?* 导出并合并单元格
??? ?* 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;
??? }

热点排行