• 关于

    相同单元格合并

    的搜索结果

问题

easyUI datagrid合并单元格后一点小调整?

atagrid中将相同的列合并单元格成功,代码也是我在网上找的直接用的,但是合并单元格后: 第一行都会连着那个合并的单元格 function mergeCellsByField(tableID, colList) { var...
a123456678 2019-12-01 20:22:55 1245 浏览量 回答数 1

回答

package org.jeecgframework.poi.util; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; import org.apache.commons.lang3.StringUtils; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.util.CellRangeAddress; import org.jeecgframework.poi.excel.entity.params.MergeEntity; /** * 纵向合并单元格工具类 * @author JueYue * @date 2015年6月21日 上午11:21:40 */ public final class PoiMergeCellUtil { private PoiMergeCellUtil() { } /** * 纵向合并相同内容的单元格 * * @param sheet * @param mergeMap key--列,value--依赖的列,没有传空 * @param startRow 开始行 */ public static void mergeCells(Sheet sheet, Map<Integer, int[]> mergeMap, int startRow) { Map<Integer, MergeEntity> mergeDataMap = new HashMap<Integer, MergeEntity>(); if (mergeMap.size() == 0) { return; } Row row; Set<Integer> sets = mergeMap.keySet(); String text; for (int i = startRow; i <= sheet.getLastRowNum(); i++) { row = sheet.getRow(i); for (Integer index : sets) { if (row.getCell(index) == null) { mergeDataMap.get(index).setEndRow(i); } else { text = row.getCell(index).getStringCellValue(); if (StringUtils.isNotEmpty(text)) { hanlderMergeCells(index, i, text, mergeDataMap, sheet, row.getCell(index), mergeMap.get(index)); } else { mergeCellOrContinue(index, mergeDataMap, sheet); } } } } if (mergeDataMap.size() > 0) { for (Integer index : mergeDataMap.keySet()) { sheet.addMergedRegion(new CellRangeAddress(mergeDataMap.get(index).getStartRow(), mergeDataMap.get(index).getEndRow(), index, index)); } } } /** * 处理合并单元格 * * @param index * @param rowNum * @param text * @param mergeDataMap * @param sheet * @param cell * @param delys */ private static void hanlderMergeCells(Integer index, int rowNum, String text, Map<Integer, MergeEntity> mergeDataMap, Sheet sheet, Cell cell, int[] delys) { if (mergeDataMap.containsKey(index)) { if (checkIsEqualByCellContents(mergeDataMap.get(index), text, cell, delys, rowNum)) { mergeDataMap.get(index).setEndRow(rowNum); } else { sheet.addMergedRegion(new CellRangeAddress(mergeDataMap.get(index).getStartRow(), mergeDataMap.get(index).getEndRow(), index, index)); mergeDataMap.put(index, createMergeEntity(text, rowNum, cell, delys)); } } else { mergeDataMap.put(index, createMergeEntity(text, rowNum, cell, delys)); } } /** * 字符为空的情况下判断 * * @param index * @param mergeDataMap * @param sheet */ private static void mergeCellOrContinue(Integer index, Map<Integer, MergeEntity> mergeDataMap, Sheet sheet) { if (mergeDataMap.containsKey(index) && mergeDataMap.get(index).getEndRow() != mergeDataMap.get(index).getStartRow()) { sheet.addMergedRegion(new CellRangeAddress(mergeDataMap.get(index).getStartRow(), mergeDataMap.get(index).getEndRow(), index, index)); mergeDataMap.remove(index); } } private static MergeEntity createMergeEntity(String text, int rowNum, Cell cell, int[] delys) { MergeEntity mergeEntity = new MergeEntity(text, rowNum, rowNum); List<String> list = new ArrayList<String>(delys.length); mergeEntity.setRelyList(list); for (int i = 0; i < delys.length; i++) { list.add(getCellNotNullText(cell, delys[i], rowNum)); } return mergeEntity; } private static boolean checkIsEqualByCellContents(MergeEntity mergeEntity, String text, Cell cell, int[] delys, int rowNum) { // 没有依赖关系 if (delys == null || delys.length == 0) { return mergeEntity.getText().equals(text); } // 存在依赖关系 if (mergeEntity.getText().equals(text)) { for (int i = 0; i < delys.length; i++) { if (!getCellNotNullText(cell, delys[i], rowNum).equals( mergeEntity.getRelyList().get(i))) { return false; } } return true; } return false; } /** * 获取一个单元格的值,确保这个单元格必须有值,不然向上查询 * * @param cell * @param index * @param rowNum * @return */ private static String getCellNotNullText(Cell cell, int index, int rowNum) { String temp = cell.getRow().getCell(index).getStringCellValue(); while (StringUtils.isEmpty(temp)) { temp = cell.getRow().getSheet().getRow(--rowNum).getCell(index).getStringCellValue(); } return temp; } } 之前版本模板没有合并单元格的属性,现在把那段功能提出出来了,你可以直接使用下  ######你好,请问下你用jxls怎么动态合并的单元格######不用这个了 我用了jxls实现了 感觉那个好用些######合并what?一列同样的数据吗?######类似这种效果 http://blog.csdn.net/hu_shengyang/article/details/6736816######全部显示 “一手”######你看第一张图的 “手别” 应该要合并的
kun坤 2020-06-09 09:30:53 0 浏览量 回答数 0

问题

如何用Python在笔记本电脑上分析100GB数据?

如何用Python在笔记本电脑上分析100GB数据? 许多组织都试图收集和利用尽可能多的数据,以改进他们如何经营业务、增加收入或如何影响周围的世界。因此,数据科学家面对50GB甚至500GB大小的...
珍宝珠 2020-02-18 12:56:20 1 浏览量 回答数 0

问题

【精品问答】110+数据挖掘面试题集合

数据挖掘工程师面试宝典双手呈上,快来收藏吧! 1.异常值是指什么?请列举1种识别连续型变量异常值的方法? 2.什么是聚类分析? 3.聚类算法有哪几种?选择一种详细描述其计算原理和步骤。 4.根据要求写出SQL ...
珍宝珠 2019-12-01 21:56:45 2713 浏览量 回答数 3

问题

【精品问答】python技术1000问(2)

为了方便python开发者快速找到相关技术问题和答案,开发者社区策划了python技术1000问内容,包含最基础的如何学python、实践中遇到的技术问题、python面试等维度内容。 我们会以每天至少50条的...
问问小秘 2019-12-01 22:03:02 3129 浏览量 回答数 1

云产品推荐

上海奇点人才服务相关的云产品 小程序定制 上海微企信息技术相关的云产品 国内短信套餐包 ECS云服务器安全配置相关的云产品 开发者问答 阿里云建站 自然场景识别相关的云产品 万网 小程序开发制作 视频内容分析 视频集锦 代理记账服务 阿里云AIoT