精华内容
下载资源
问答
  • 对于合并单元格的excel,分页打印时,列单元格的内容可能只显示在第二页,显示格式不友好。针对这一问题,对每一页的列单元格需要分别进行合并操作。附件中的vba代码就解决了这个问题。把代码复制到宏,运行即可。
  • 1、先设置一些数据,这里我以一列为例 ...2、然后我们找相同的一块列区域,然后合并单元格 3、选中合并的区域,然后选择格式刷,然后选中相同数字区域,就可以了 取消合并又显示之前的数据 ...

    1、先设置一些数据,这里我以一列为例

    2、然后我们找相同的一块列区域,然后合并单元格

    3、选中合并的区域,然后选择格式刷,然后选中相同数字区域,就可以了

    取消合并后又显示之前的数据

     

     

    展开全文
  • excle 拆分合并单元格并填充数据

    千次阅读 2018-11-21 13:45:35
    Excel数据表经常会把相同内容的单元格数据合并,如何快速把合并的单元格重新拆分并填充数据呢? 1.取消单元格合并 选择需要拆分的列,单击“开始”选项卡→“合并后居中”选项选择“取消单元格合并”命令,实现单元格...

    Excel数据表经常会把相同内容的单元格数据合并,如何快速把合并的单元格重新拆分并填充数据呢?

    在这里插入图片描述

    1.取消单元格合并
    选择需要拆分的列,单击“开始”选项卡→“合并后居中”选项选择“取消单元格合并”命令,实现单元格分拆。

    2.定位空值
    拆分以后,只有第一个单元格里有内容,其他都是空值,所以需要填空单元格为空值。
    “Ctrl”+“G”组合键或者快捷键“F5”,按下弹出“定位”对话框,选择“定位条件”命令,选择“空值”选项,点击确定。

    3.空值填充
    直接输入公式“=B1”(此处不得点击鼠标,而是直接通过键盘输入内容会自动在第一个空单元格输入),输入完成后按下“Ctrl+Enter”快捷键,即可自动填充所有空值单元格。将A列数据复制,选择性粘贴为数值即可。

    注意事项:

    1. F5或者“Ctrl”+“G”组合键选择空值口,不得点击鼠标,否则选择无效
    2. 输入内容后不得按Enter,而需按Ctrl+Enter组合键。
    展开全文
  • //返回合并单元格占用行数 public int isMergedRegion(Sheet sheet, int row, int column) { int sheetMergeCount = sheet.getNumMergedRegions(); for (int i = 0; i ; i++) { CellRangeAddress range = ...
  • openpyxl处理.xlsx合并单元格数据

    千次阅读 2021-01-29 11:12:41
    openpyxl处理.xlsx合并单元格数据 一、之前学过xlrd处理.xls格式的excel数据,想着excel使用.xlsx格式比较多,所以用openpyxl做一个处理.xlsx格式的excel数据(仅供参考) 二、思路:(我这里只展示一个表单的情况...

    openpyxl处理.xlsx合并单元格数据
    一、之前学过xlrd处理.xls格式的excel数据,想着excel使用.xlsx格式比较多,所以用openpyxl做一个处理.xlsx格式的excel数据(仅供参考)
    表单内容
    二、思路:(我这里只展示一个表单的情况)
    1.读取excel文件
    2.获取表单里面单元格数据(包含普通单元格、合并单元格)
    3.将单元格数据用字典形式存在列表中

    三、实践
    1.读取excel文件:
    1.1、首先下载第三方库openpyxl,进入doc使用命令pip install openpyxl
    1.2、代码中引用openpyxl

    import openpyxl
    

    1.3、读取excel文件,定义文件对象

    data = openpyxl.load_workbook("压测手机号.xlsx")
    

    1.4、上面定义文件对象后就相当于进入文件了,进了文件后我们要知道文件里的表单,所以定义文件的表单对象

    sheet = data['Sheet1']  # Sheet1为表单名
    

    1.5、定义了表单对象后,就可以进行下一步获取表单中单元格内容了

    2.获取表单里面单元格数据
    2.1、获取指定单元格数据(row表示行,column表示列):

    a = sheet.cell(row=3, column=1).value
    print(a)
    

    2.2、单元格有合并单元格的情况,所以需要能够获取合并单元格的数据

    # 获取合并单元格需要用到下面几个
    print(sheet.max_row)  # TODO 获取最大行数
    print(sheet.min_row)  # TODO 获取最小行数
    print(sheet.max_column)  # TODO 获取最大列数
    print(sheet.min_column)  # TODO 获取最小列数
    

    openpyxl中使用merged_cells可以查询出所有的合并单元格行和列,得到的是下面的A2:A3 A5:A6 B5:B6 C5:C6

    merge_lists = sheet.merged_cells
    
    A2:A3 A5:A6 B5:B6 C5:C6
    

    然后处理合并单元格,得到合并单元格的行列坐标,我这里做了个方法,整体代码如下

    def merge():
        # TODO 查询该sheet表单所有合并单元格
        merge_lists = sheet.merged_cells
        print(merge_lists)
        merge_all_list = []  # 接收最终内容并返回
        # TODO 遍历合并单元格
        for merge_list in merge_lists:
            # TODO 获取单个合并单元格的起始行(row_min)终止行(row_max)和起始列(col_min)终止列(col_max)
            row_min, row_max, col_min, col_max = merge_list.min_row, merge_list.max_row, merge_list.min_col, merge_list.max_col
            # 这里判断如果合并单元格起始、终止的行和列都不相等,说明合并单元格既合并了行又合并了列,两个for循环依次取出行列位置分别存在x,y中
            if (row_min != row_max and col_min != col_max):
                row_col = [(x, y) for x in range(row_min, row_max+1) for y in range(col_min, col_max+1)]
                merge_all_list.append(row_col)  # 取出的值存在列表中
             # 这里判断如果合并单元格起始、终止行相等,起始、终止列不相等,说明合并单元格只合并了列,所以行不动,只循环取出列的值,存在y中,行可以随意取row_min/row_max 
            elif (row_min==row_max and col_min != col_max):
                row_col = [(row_min, y) for y in range(col_min, col_max + 1)]
                merge_all_list.append(row_col)  # 取出的值存在列表中
             # 这里判断如果合并单元格起始、终止行不相等,起始、终止列相等,说明合并单元格只合并了行,所以列不动,只循环取出行的值,存在x中,列可以随意取col_min/col_max
            elif (row_min != row_max and col_min == col_max):
                row_col = [(x, col_min) for x in range(row_min, row_max + 1)]
                merge_all_list.append(row_col)  # 取出的值存在列表中
        return merge_all_list  # 最终返回列表
        # TODO 得到的是个这样的列表值:[[(2, 1), (3, 1)], [(5, 1), (6, 1)], [(5, 2), (6, 2)], [(5, 3), (6, 3)]],列表中每个列表表示合并单元格的跨度
    

    使用上面方法得到合并单元格的行列后,就可以使用行列坐标取出合并单元格数据了,这样普通单元格、合并单元格数据都可以得到了,也做了个方法,代码如下

    def merge_values(*rr):  # 这里方法传入一个元组入参,这个*叫啥入参来着,忘记了,可以去查查基础知识
        mm_list = merge()  # 这里调用上面的获取合并单元格的方法
        # 循环取出合并单元格方法得到的值(这个值还是列表),检查传入的参数是不是在这些值里面
        for ii in range(0, len(mm_list)):
            if rr in mm_list[ii]:  # 在,那就取值里面的第一个值(即合并单元格左上角的第一个行列坐标);
                value11 = sheet.cell(row=mm_list[ii][0][0], column=mm_list[ii][0][1]).value
                return value11
        else:  # 不在,说明不是合并单元格,使用普通单元格方法获取即可
            value2 = sheet.cell(*rr).value
            #  这个判断可要可不要,主要用来提示单元格为空,后期可以用log打印
            # if value2 is None:
            #     return "None:单元格无数据"
            # else:
            return value2
    

    将取到的表单数据用列表包字典的形式展示,并且都用第一行的标题做为key,这样后期可以方便取值

    def list_excel_data():
        list_val = []
        for x in range(sheet.min_row, sheet.max_row+1):
            if x != 1:
                dict_val = {}
                for y in range(sheet.min_column, sheet.max_column+1):
                    kk = (1, y)
                    i = (x, y)
                    dict_val[merge_values(*kk)] = merge_values(*i)
                list_val.append(dict_val)
        return list_val
    

    最终展示效果:

    [{'phone': '17601348350', 'name': '张三', 'sex': 22}, {'phone': '17601348350', 'name': '李四', 'sex': 33}, {'phone': '17601348352', 'name': '王五', 'sex': 40}, {'phone': '17601348358', 'name': '赵六', 'sex': '9'}, {'phone': '17601348358', 'name': '赵六', 'sex': '9'}, {'phone': '17601348360', 'name': '钱七', 'sex': 18}]
    
    Process finished with exit code 0
    

    全部代码如下:(没有注释了)

    import openpyxl
    
    data = openpyxl.load_workbook("压测手机号.xlsx")
    sheet = data['Sheet1']
    # a = sheet.cell(row=3, column=1).value  # TODO 获取指定行、列的值
    # print(sheet.title)  # TODO 获取sheet名称
    # print(sheet.max_row)  # TODO 获取最大行数
    # print(sheet.min_row)  # TODO 获取最小行数
    # print(sheet.max_column)  # TODO 获取最大列数
    # print(sheet.min_column)  # TODO 获取最小列数
    
    
    def merge():
        # TODO 查询该sheet表单所有合并单元格
        merge_lists = sheet.merged_cells
        # print(merge_lists)
        merge_all_list = []
        # TODO 遍历合并单元格
        for merge_list in merge_lists:
            # TODO 获取单个合并单元格的起始行(row)和起始列(col)
            row_min, row_max, col_min, col_max = merge_list.min_row, merge_list.max_row, merge_list.min_col, merge_list.max_col
            if (row_min != row_max and col_min != col_max):
                row_col = [(x, y) for x in range(row_min, row_max+1) for y in range(col_min, col_max+1)]
                merge_all_list.append(row_col)
            elif (row_min==row_max and col_min != col_max):
                row_col = [(row_min, y) for y in range(col_min, col_max + 1)]
                merge_all_list.append(row_col)
            elif (row_min != row_max and col_min == col_max):
                row_col = [(x, col_min) for x in range(row_min, row_max + 1)]
                merge_all_list.append(row_col)
        return merge_all_list
        # TODO 得到的是个这样的列表值:[[(2, 1), (3, 1)], [(10, 1), (10, 2), (10, 3), (11, 1), (11, 2), (11, 3)]]
    
    
    def merge_values(*rr):
        mm_list = merge()
        for ii in range(0, len(mm_list)):
            if rr in mm_list[ii]:
                value11 = sheet.cell(row=mm_list[ii][0][0], column=mm_list[ii][0][1]).value
                return value11
        else:
            value2 = sheet.cell(*rr).value
            # if value2 is None:
            #     return "None:单元格无数据"
            # else:
            return value2
    
    
    def list_excel_data():
        list_val = []
        for x in range(sheet.min_row, sheet.max_row+1):
            if x != 1:
                dict_val = {}
                for y in range(sheet.min_column, sheet.max_column+1):
                    kk = (1, y)
                    i = (x, y)
                    dict_val[merge_values(*kk)] = merge_values(*i)
                list_val.append(dict_val)
        return list_val
    
    
    bb = list_excel_data()
    print(bb)
    # print(bb[0].get('name'))
    data.close()
    
    展开全文
  • JAVA:Excel合并单元格数据读取

    千次阅读 2018-10-26 10:54:37
    使用poi解析excel,若为合并单元格,仅第一行有数据,后面的合并单元格没有数据; 解决办法 判断cell是否为合并单元格,之后分类处理 //判断是否为合并行 if(isMergedRegion(sheet,j,0)){ int lastRow = ...

    问题

    使用poi解析excel后,若为合并单元格,仅第一行有数据,后面的合并单元格没有数据;

    解决办法

    判断cell是否为合并单元格,之后分类处理

     //判断是否为合并行
                    if(isMergedRegion(sheet,j,0)){
                        int lastRow = getRowNum(cras,sheet.getRow(i).getCell(0),sheet);
                        for(;j<=lastRow;j++){
                            Row row = sheet.getRow(j);
                            if (row == null) {
                                continue;
                            }
                            if (row.getFirstCellNum() < 0) {
                                continue;
                            }
                            int readColumnCount = 0;
                            if (columnCount == null || columnCount > row.getLastCellNum()) {
                                readColumnCount = (int) row.getLastCellNum();
                            } else {
                                readColumnCount = columnCount;
                            }
                            List<Object> rowValue = new LinkedList<Object>();
                            // 解析sheet 的列
                            for (int k = 0; k < readColumnCount; k++) {
                                if(isMergedRegion(sheet,j,k)) {
                                    rowValue.add(getMergedRegionValue(sheet, j, k));
                                }else{
                                    Cell cell = row.getCell(k);
                                    rowValue.add(getCellValue(wb, cell));
                                }
                            }
                            dataList.add(rowValue);
                        }
    
    

    获取合并单元格数据代码

        /**
         * 获取合并单元格的值
         * @param sheet
         * @param row
         * @param column
         * @return
         */
        public static String getMergedRegionValue(Sheet sheet, int row, int column){
            int sheetMergeCount = sheet.getNumMergedRegions();
    
            for(int i = 0 ; i < sheetMergeCount ; i++){
                CellRangeAddress ca = sheet.getMergedRegion(i);
                int firstColumn = ca.getFirstColumn();
                int lastColumn = ca.getLastColumn();
                int firstRow = ca.getFirstRow();
                int lastRow = ca.getLastRow();
    
                if(row >= firstRow && row <= lastRow){
                    if(column >= firstColumn && column <= lastColumn){
                        Row fRow = sheet.getRow(firstRow);
                        Cell fCell = fRow.getCell(firstColumn);
                        return getCellValue(fCell) ;
                    }
                }
            }
    
            return null ;
        }
    
    展开全文
  • 数据集合导出到excel模板(未合并单元格合并单元格
  • java代码,实现从数据库中查询出数据,然后通过poi实现合并单元格生成excel
  • 阿里开源 Easy-Excel合并单元格数据

    万次阅读 2019-06-12 11:52:42
    最终效果图 废话不多说,直接上代码 导入阿里云依赖jar包 封装实体类: 开始编写合并单元格: 组装数据的方法: 打完收工...欢迎大家来交流 ...
  • 下面的程序在合并单元格后将保留合并单元格区域中所有单元格中的数据。 Sub MergeCellsAndValues() Dim rng AsRange Dim strResult As String On ErrorResume Next For Eachrng In Selection '可
  • table数据相同时合并单元格,原理:逐行进行比较,相同时隐藏第二行,对第一行添加rowspan 【table数据相同时合并单元格,原理:逐行进行比较,相同时隐藏第二行,对第一行添加rowspan】
  • 我想合并excel单元格,但不光是行合并,或是列合并,而是其中...(前三行已经是列合并后单元格啦)有高手么?指点一下~~ protected void AddExcel(DataSet ds)  {  DataTable dt = ds.Tables[0];  //获取exce
  • delphi源码--拆分excel文件的合并单元格并用数据填满拆分的单元格
  • 在做Excel数据表为了美观、直观,经常会把相同内容的单元格数据合并。但这样做破坏了Excel表的完整性,不利于后期数据分析。这就要我们把合并的单元格重新拆分并填充数据,如何快速实现呢? ...
  • poi获取exccel有合并单元格数据,存入List
  • Excel导出合并单元格导致数据丢失

    千次阅读 2019-12-22 16:17:52
    Excel导出合并单元格,导致数据丢失
  • <!-- * @Author: your name * @Date: 2019-10-22 10:31:31 * @LastEditTime: 2019-10-22 13:19:49 * @LastEditors: Please set LastEditors * @Description: In User Settings Edit * @FilePath: /mongotes...
  • easypoi导入excel文件的时候,如果excel存在合并单元格,只能在单元格第一行取到数据,后面几行取不到,请问下怎么取呢 ![图片说明](https://img-ask.csdn.net/upload/201908/01/1564638406_23451.png)
  • 大家知道,使用含有合并单元格数据创建数据透视表时,会有空的结果出来,不能达到我们的要求,问题的关键在于被合并的单元格的值是空值,那么,问题来了,怎么把这些被合并的单元格作为有值合并呢,即,虽然被合并...
  • table表格依据数据进行合并单元格table表格依据数据内容相同时进行合并行单元格合并前与合并实际效果比较原理核心代码写代码犯错的位置 table表格依据数据内容相同时进行合并行单元格 合并前与合并实际效果比较 ...
  • 通过使用数据透视表的合并标题单元格功能,实现数据合并单元格保留原数据
  • Excel合并相同单元格

    2017-07-10 21:43:45
    合并EXCEL里面相同单元格
  • 拆分合并单元格填充数据步骤1:单击“开始”选项卡→“合并后居中” 选项选择 “取消单元格合并” 选中要处理的单元格/列,按下快捷键“F5”,弹出“定位”对话框,选择“定位条件”命令,选择“空值”选项,点击...
  • spreadjs_包含合并单元格数据绑定-demo
  • easyUI合并DataGrid单元格

    万次阅读 2012-08-11 10:17:28
    @author YHC datagrid经常需要合并一些单元格,这个教程将向你展示如何在datagrid合并... 如何合并单元格,在所有合并单元格中,除了第一个单元格, 将会隐藏当单元格合并. 查看Demo 创建DataGrid <tab
  • 以前只做过poi的表格导出,复杂繁琐,这次有个功能需要合并单元格数据导出,从同事那里取经,发现了一个超级炒鸡好用的导出工具easypoi,啊,天哪,开发这个的真是是最强大脑!!!话不多说了,直接上代码: 一:...
  • EXCEL中合并单元格拆分,如何使每一个单元格显示同样的内容的问题 使用这个 合并单元格批量填充方法,一键批量填充 地址:http://www.excelfb.com/,点击:拆分Excel中合并单元格并复制值(填充空白格) 自动...
  • 广告关闭腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元!... 使用循环判断是合并单元格还是普通单元格,并将合并单元格中的首行值赋值给合并单元格...
  • 动态合并excel单元格

    千次阅读 2017-06-12 19:16:58
    动态合并excel单元格
  • 其实数据填入成功了,但是因为合并单元格的问题(主要是列合并),生成cell的下标顺序不能再是0,1,2,3....中间如果有合并列,那么需要把列数算进去。cell的下标顺序可能是这样:0,1,3,5...这种。 如图:G-J K-N...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 48,930
精华内容 19,572
关键字:

如何计算合并后的单元格数据