精华内容
下载资源
问答
  • python openpyxl 合并单元格

    千次阅读 2020-01-06 19:34:26
    合并/取消合并单元格 合并单元格时,除左上角以外的所有单元格都将从工作表中删除。为了携带合并单元格的边界信息,合并单元格的边界单元格被创建为MergeCells,其值始终为None。有关格式化合并单元格的信息,请...

    合并/取消合并单元格
    合并单元格时,除左上角以外的所有单元格都将从工作表中删除。为了携带合并单元格的边界信息,合并单元格的边界单元格被创建为MergeCells,其值始终为None。有关格式化合并单元格的信息,请参见样式化合并单元格。

    from openpyxl.workbook import Workbook

    wb = Workbook()
    ws = wb.active

    ws.merge_cells(‘A2:D2’)
    ws.unmerge_cells(‘A2:D2’)

    or equivalently

    ws.merge_cells(start_row=2, start_column=1, end_row=4, end_column=4)
    ws.unmerge_cells(start_row=2, start_column=1, end_row=4, end_column=4)

    展开全文
  • 请注意,上面的代码不会检查给定单元格是否实际是合并单元格集的一部分,因此在单元格应该为空的情况下,它可能会复制以前的值。不过,这可能会有所帮助。 附加信息: 随后,我找到了一个文档页面,其中讨论了一个^...

    我刚试过,似乎对你的样本数据有效:all_data = []

    excel = xlrd.open_workbook(excel_dir+ excel_file)

    sheet_0 = excel.sheet_by_index(0) # Open the first tab

    prev_row = [None for i in range(sheet_0.ncols)]

    for row_index in range(sheet_0.nrows):

    row= []

    for col_index in range(sheet_0.ncols):

    value = sheet_0.cell(rowx=row_index,colx=col_index).value

    if len(value) == 0:

    value = prev_row[col_index]

    row.append(value)

    prev_row = row

    all_data.append(row)

    返回[['2', '0', '30'], ['2', '1', '20'], ['2', '5', '52']]

    它跟踪前一行的值,如果当前行的相应值为空,则使用这些值。

    请注意,上面的代码不会检查给定单元格是否实际是合并单元格集的一部分,因此在单元格应该为空的情况下,它可能会复制以前的值。不过,这可能会有所帮助。

    附加信息:

    随后,我找到了一个文档页面,其中讨论了一个^{}属性,可以用来确定包含在各种合并单元格范围中的单元格。文档中说它是“0.6.1版中的新版本”,但是当我试图将它与由pip安装的xlrd-0.9.3一起使用时,出现了错误NotImplementedError: formatting_info=True not yet implemented

    我并不特别倾向于开始寻找不同版本的xlrd来测试merged_cells特性,但是如果上面的代码不足以满足您的需要,并且您遇到了与我使用formatting_info=True时相同的错误,那么您可能会感兴趣这样做。

    展开全文
  • /usr/bin/env python#encoding: utf-8importopenpyxlimportcollectionsimportjsonimportcommands#颜色显示defblue(string):print ("\033[0;34m%s\033[0m" %string)defcyan(string):print ("\033[0;36m%s\033[0m" %...

    #!/usr/bin/env python#encoding: utf-8

    importopenpyxlimportcollectionsimportjsonimportcommands#颜色显示

    defblue(string):print ("\033[0;34m%s\033[0m" %string)defcyan(string):print ("\033[0;36m%s\033[0m" %string)defgreen(string):print ("\033[0;32m%s\033[0m" %string)defred(string):print ("\033[0;46m%s\033[0m" %string)defwrite_Conf(path,data):

    with open(path,'a+') as f:

    f.write(data+ "\n")defcmd(args):

    status, output=commands.getstatusoutput(args)if status ==0:return0else:return "Command error or something"

    defmerge():#查询合并的单元格

    m_list =worksheet.merged_cells#判断单元格生成坐标输出到list

    merge_all_list =[]for m_area inm_list:#合并单元格的起始行坐标、终止行坐标

    r1, r2, c1, c2 =m_area.min_row, m_area.max_row, m_area.min_col, m_area.max_colif (r1 != r2 and c1 !=c2):

    row_col= [(x, y) for x in xrange(r1, r2 + 1) for y in xrange(c1, c2 + 1)]

    merge_all_list.append(row_col)elif (r1 == r2 and c1 != c2): #or (r1 != r2 and c1 == c2):

    col = [(r1, n) for n in xrange(c1, c2 + 1)]

    merge_all_list.append(col)elif (r1 != r2 and c1 ==c2):

    row= [(m, c1) for m in xrange(r1, r2 + 1)]

    merge_all_list.append(row)return merge_all_list,col #返回一个元组(索引0是合并之后的单元格列表,索引1是第一行合并的单元格坐标)

    result = cmd("> json.conf")if result ==0:print "Have to empty"

    else:printresult

    workbook= openpyxl.load_workbook("moban.xlsx") #加载已经存在的excel

    name_list =workbook.sheetnames#worksheet = workbook.get_sheet_by_name(name_list[0]) #最新版本已经不能使用这种方法

    worksheet =workbook[name_list[0]]#print name_list#print workbook#print worksheet

    rows=worksheet.rows

    columns=worksheet.columns#如下是最大行数和最大列数

    row_number =worksheet.max_row

    col_number=worksheet.max_column#定义添加顺序的字典

    temp =collections.OrderedDict()for i in xrange(2, worksheet.max_row+1):

    install_list=[]

    col_merger=[]for j in xrange(1, worksheet.max_column+1):

    merge_list=merge()'''merge_list结果就类似如下坐标

    [(1, 5), (1, 6), (1, 7), (1, 8), (1, 9), (1, 10), (1, 11), (1, 12), (1, 13), (1, 14)]

    [(3, 1), (4, 1)]

    [(2, 2), (2, 3), (3, 2), (3, 3)]

    [(4, 1), (5, 1), (6, 1)]

    [(8, 2), (8, 3), (8, 4), (9, 2), (9, 3), (9, 4), (10, 2), (10, 3), (10, 4)]'''

    #循环合并的单元格的坐标和字典的横纵坐标对比,

    #如果存在单元格的list就获取合并单元格中的左上角单元格值,然后跳出

    #如果不存在单元格的list就再继续判断是不是大于第五列,大于第五列就是添加list中然后跳出,不然添加的是重复的list

    for a, b inenumerate(merge_list[0]):if (i, j) inb:

    cell_value_header= worksheet.cell(row=1, column=j).value

    cell_value= worksheet.cell(row=merge_list[0][a][0][0], column=merge_list[0][a][0][1]).value

    temp[cell_value_header]=cell_valuebreak

    else:if j >= merge_list[-1][0][-1]:

    cell_value_header= worksheet.cell(row=1, column=merge_list[-1][0][-1]).value

    cell_value= worksheet.cell(row=i, column=j).valueif not cell_value isNone:

    col_merger.append(cell_value)

    temp[cell_value_header]=col_mergerbreak

    else:

    cell_value_header= worksheet.cell(row=1, column=j).value

    cell_value= worksheet.cell(row=i, column=j).value

    temp[cell_value_header]=cell_value#print json.dumps(temp)

    write_Conf("json.txt", json.dumps(temp))

    展开全文
  • 平时EXCEL时我们通常直接复制粘贴,但有时因表格内容过大,直接粘贴效率低,且当字段过多时还需要进行逐列粘取我们所需要的字段,易错率高,这时我们就可以用python轻松提取我们需要的共同字段并合并表格。...

    工作中我们常常遇到多个格式相同的表格面要合并成一个表格,比如将2019年的数据与2020年的数据合并在一起来进行分析。平时EXCEL时我们通常直接复制粘贴,但有时因表格内容过大,直接粘贴效率低,且当字段过多时还需要进行逐列粘取我们所需要的字段,易错率高,这时我们就可以用python轻松提取我们需要的共同字段并合并表格。

    import pandas as pd

    #读取2019和2020年的数据

    df=pd.read_excel(r"D:\work\需求计划\采购记录\2019.xlsx")

    df2020=pd.read_excel(r"D:\work\需求计划\采购记录\2020.xlsx")

    #分别提取需要的字段名

    df2019=df[["定单 日期","第二项目 号","行说明","规格型号1","制造商名称","供应商 名","原始定单数量","单位 成本","原始定购 金额","承诺 交货日期","实际发运 日期","定单号","项目号"]]

    df2020=df2020[["定单 日期","第二项目 号","行说明","规格型号1","制造商名称","供应商 名","原始定单数量","单位 成本","原始定购 金额","承诺 交货日期","实际发运 日期","定单号","项目号"]]

    #合并2019和2020,ignore_index=True表示索引重置,drop_duplicates()表示去重

    df=pd.concat([df2019,df2020],ignore_index=True).drop_duplicates()

    #取单位成本大于10000的数据

    df1=df[df["单位 成本"]>10000]

    #输出表格

    df1.to_excel(excel_writer=r"D:\work\需求计划\采购记录\20192020大金额采购清单1.xlsx")

    df.to_excel(excel_writer=r"D:\work\需求计划\采购记录\20192020合并表.xlsx")

    up-ccfaf5e6090fe82e2250c330c734ef30766.png

    展开全文
  • xlrd 也遇到了一点问题,文件如果是 xls 文件直接打开,在提取合并单元格的时候会拿不到数据,需要加上 formatting_info=True,formatting_info=True 的时候打开. xlsx 文件会报错 NotImplementedError: formatting_...
  • 且项目成员过多,手动打开每一个文件去复制内容,就是一个大量重复性工作,且对于自己得提升毫无用处。于是产生了用代码实现excel合并得想法。初学python,代码还不够完善,如果大家看到,请指出不足之处,谢谢!...
  • 本篇博文可以说是博主另一篇博文的反向需求——博文:《python实现excel单元格对象合并》。        简单描述下问题,借助示例来说明,日常工作中,经常会拿到一些单元格合并的...
  • python-Excel读取-合并单元格读取

    千次阅读 2019-03-28 11:34:00
    python-Excel读取-合并单元格读取(后续会补充python-Excel写入的部分) ...合并单元格的函数通用,可以直接复制拿走,传入的参数为Excel某sheet表中的数据。 两个列表合并为一个字典函数lis...
  • from openpyxl import load_workbook def copy_excel(totle_excel,totle_sheetname...说明:以上代码可以将格式以及合并单元格的样式均复制到另一张表 注意:如果你是跨excel文件的复制且带有公式,不建议使用
  • 下面就写些如何设置单元格的 字体对齐,字体大小、边框, 合并单元格, 这些设置。 import xlwings as xw app = xw.App(visible=True, add_book=False) wb = app.books.add() sht = wb.sheets.active b3 = sht....
  • jqGrid合并单元格

    2018-06-23 18:56:15
    下面代码直接复制即可,我会将注意点红色标出,先上一下效果图<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> &...
  • Openpyxl:核心模块,用于读表、制表、复制表、合并单元格Tkinter:用于创建界面 Os:路径相关操作 Re: 用于将a1:b5这种字符串分割成a、1、b、5,便于循环合并单元格Math:主要用于向上取整,向下取整 读取工作簿中的...
  • Python基于openpyxl模块对Excel合并单元格的处理: #!/usr/bin/env python # coding=utf-8 import openpyxl excelFile = 'test.xlsx' wb = openpyxl.load_workbook(excelFile) sheet = wb.sheetnames # 遍列Excel...
  • 合并单元格数据中包含空值,取消合并单元格并填充时,空值填充错误怎么办?CTRL+G定位,CTRL+H替换,格式刷,快速解决
  • [问题解决] Openpyxl操作Excel合并单元格边框缺失 anaconda自带openpyxl库,3.6版python中openpyxl是2.4.10 该版本openpyxl在打开Excel并保存时,如Excel中有合并单元格,则单元格的边框会部分缺失 最新版的2.6.2...
  • 读取已合并单元格时,默认只保留左上角的单元格有值,其他会变成None,如何使得读取的时候每个单元格都保留原值
  • (三)xlwt模块详解--合并单元格

    万次阅读 2018-11-03 08:40:17
    本篇博客主要展示了xlwt中合并单元格的操作 代码如下(纯属自学期间,如有更好的方法,请在下面评论区留下意见或建议,多谢!): #!/usr/bin/env python3.6 # encoding: utf-8 ''' @author: Leo @contact: @...
  • 运放串联串联平衡电阻 在Excel中合并单元格而无需串联 (Combine Cells in Excel Without Concatenate) Good news, if you're spelling challenged -- or too lazy to type long words. You can combine cells in ...
  • 我想解释如下 -如何使用python在excel工作簿中拆分合并单元格 结果应符合以下条目的新的Excel文件 - 使用xlrd所有合并列是复制相同的字符串我的解决办法如下所示 -[注意:“formatted_info = True”标志尚未在xlrd...
  • 用他们的话来说,就是复制A列的数据到合并单元格区域怎么都不成功?   用比较简洁的示意图来说,就如下所示: 将指定区域的数据依顺序逐个填充到合并单元格里。     OK,首先得声明一下,这不是直接复制所能完成...
  • 2019独角兽企业重金招聘Python工程师标准>>> ...
  • 想把一个完整的worksheet复制到新的文件中,但所有合并单元格都只剩下左上角的边框,其它边框丢失了,怎样才能修补回来? 版本python3.8+openpyxl3.0.3 试过论谈里的修改workbook.py或者patch_worksheet()打补丁都...
  • Python pandas合并多个csv文件

    千次阅读 2020-03-26 21:56:28
    有是需要将多个表头一致的文件合并成一个,手动打开所有表一个一个复制 粘贴到总表中,繁琐且容易出错,写个简单代码,一键将所有的csv文件合并 """ Created on Wednesday, March 25, 2020 at 12:14:56 @author: ...
  • python-合并Excel文件【上百个不在同一文件夹下的Excel文件,处理过程超多】前言:1、今天的excel数据1.1、数据展示2、合并思路分析3、步入代码3.1、导入模块3.2、解决思路步骤4*3.3、解决空、缺失值提取完整数据 ...
  • bank1[0:4] # 循环一次复制一个文件,文件名由变量组成 shutil.copy("C:\\ccc\\新新人类模板.xlsx", "C:\\ccc\\"+'新新-'+name[i]+'-'+bank2+'-.xlsx') 原本的需求里还有单元格合并,背景颜色,每个单元格长度不一致...
  • 本来我是想尝试,选中某个多个单元格复制到同一个sheet的其他位置,找了很多资料没有找到,目前只有这么一个办法,如果有大佬看到,欢迎补充请教。 # encoding:utf-8 import pandas as pd import openpyxl xl = pd....
  • 使用Python的xlwings模块批量合并多个工作簿中的同名工作表 import os import xlwings as xw import pandas as pd ''' 批量合并多个工作簿中的同名工作表 ''' # 给出要合并的工作表的文件路径 file_path = r'E:\...
  • openpyxl 复制cell单元格包括所有样式

    千次阅读 2019-08-07 00:46:33
    target_cell.data_type = source_cell.data_type target_cell.fill = copy(source_cell.fill) if source_cell.has_style: target_cell._style = copy(source_cell._style) target_cell.font = copy(source_...
  • 有时候需要将多个表头一致的文件合并成一个(注意要表头一致,不一致的话,合并之后内容会错开),手动打开所有表一个一个复制 粘贴到总表中,繁琐且容易出错,写个简单代码,一键将所有的excel(.xlsx)文件合并 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,032
精华内容 812
关键字:

python复制合并单元格

python 订阅