精华内容
下载资源
问答
  • openpyxl删除单元格
    千次阅读
    2020-11-30 08:24:49

    我正在寻找删除或清除某些单元格内容的方法。在搜索之后,使用openpyxl似乎不是一件简单的事情。找到this similar question,建议将单元格设置为“无”。我这样做了,但是当我尝试附加数据时,它仍然将它附加到我设置为“无”的所有行的末尾。def clear_sheet(this_sheet):

    '''

    Clear all cells starting from third row. we keep our header and

    replaces other rows content by None

    '''

    dst_wb=openpyxl.load_workbook(dest_filename, read_only=False, keep_vba=True)

    dst_ws=dst_wb.get_sheet_by_name(this_sheet)

    #We kee the header located in row 2, and set the rest to None

    if dst_ws.cell('A3').value is not None: #check if already cleared content

    for row in dst_ws.iter_rows(row_offset=2):

    for cell in row:

    cell.value=None

    dst_wb.save(dest_filename)

    def copy_data(searchMilestone):

    '''

    gets data from the sequence file

    '''

    dst_wb=openpyxl.load_workbook(dest_filename, read_only=False, keep_vba=True)

    dst_ws=dst_wb.get_sheet_by_name(sequence_sheet)

    data =[]

    print dst_ws.max_row #here should return 3, but it seems it is counting all the cells we set to None

    for i in xrange(sequenceWs.nrows):

    #this reading part is done using xlrd module

    milestone=sequenceWs.cell(i,1).value

    execution=sequenceWs.cell(i,2).value

    system=sequenceWs.cell(i,16).value

    if searchMilestone in milestone and 'WC' in execution:

    #copy some data

    line=[data, data, data]

    dst_ws.append(line)

    dst_wb.save(dest_filename)

    在向其写入数据的工作簿中,我有冻结窗格和一些筛选器(显示所有数据)。对清除内容后如何强制从第3行追加有何建议?我正在使用python 2.7和openpyxl2.3。

    更多相关内容
  • openpyxl 删除单元格

    2022-01-29 15:18:17
    使用openpyxl处理文件

    操作xlsx文件删除第一行和最后一行 

    import openpyxl
    
    file_name = 'i-origin.xlsx'   设置文件路径
    wb = openpyxl.load_workbook(file_name)   #传入对象
    sheet = wb['总库存查询列表']      设置操作的分页
    status = sheet.cell(sheet.min_row, 1).value   
    print(status)
    sheet.unmerge_cells(start_row=1, start_column=1, end_row=1, end_column=7)
    print('拆分单元格成功')
    sheet.delete_rows(sheet.min_row, 1)
    sheet.delete_rows(sheet.max_row, 1)
    print('删除成功')
    wb.save(file_name)
    print('处理完成')
    

    处理前:

     处理后:

    此方法比较繁琐,还有一种方法是删除首行和最后一行就可以  直接切片处理[1:-1]

     

    展开全文
  • Python使用openpyxl完成单元格合并

    千次阅读 2021-03-07 11:09:34
    openpyxl合并单元格的方法: .merge_cells方法 假设当前工作表为ws,则 ws.merge_cells(A2:B4) 即表示将当前工作表的A2至B4这一矩形范围内的所有单元格合并 # 打开文件 result_file = "C:\\Users\\acer\\Desktop\\...

    openpyxl合并单元格的方法:

    .merge_cells方法
    假设当前工作表为ws,则
    ws.merge_cells(A2:B4)
    即表示将当前工作表的A2至B4这一矩形范围内的所有单元格合并

    # 打开文件
    result_file = "C:\\Users\\acer\\Desktop\\test.xlsx"
    wb = load_workbook(result_file)
    # 获取sheet名的集合
    wb_names = wb.sheetnames
    print(wb_names)
    # 获取第一个sheet
    ws = wb[wb_names[0]]
    # 在一个矩阵范围内合并单元格
    ws.merge_cells('A2:B4')
    

    若合并后出现excel无法读取的问题:

    将文件后缀改为zip,用解压软件打开
    依次进入 xl/worksheets/sheet1.xml
    可以不是sheet1.xml,看具体的工作sheet
    然后使用浏览器打开xml文件,拉到最下方,会看到mergecount标签,如下
    在这里插入图片描述
    这里的<mergeCell ref="B3"/>
    明显是错误行,删掉此类行即可
    之后保存退出,改回xlsx文件即可

    展开全文
  • from openpyxl import Workbook wb = Workbook() ws = wb.active cell = ws["a6"] # 通过坐标获取 cell2 = ws.cell(1, 2) # 通过行列下标获取 # 直接修改某个单元格的值 ws["a5"] = 666 # 先获取单元格对象然后...

    1.获取和修改单个单元格

    from openpyxl import Workbook
    wb = Workbook()
    ws = wb.active
    
    cell = ws["a6"]  # 通过坐标获取
    cell2 = ws.cell(1, 2)  # 通过行列下标获取
    
    # 直接修改某个单元格的值
    ws["a5"] = 666  
    ws['A3'] = datetime.datetime.now().strftime("%Y-%m-%d")  # 修改为时间类型
    ws.append([1, 2, 3]) # 在最下面新增一行追加一个或多个值
    
    # 先获取单元格对象然后再进行修改
    cell = ws["a6"]
    cell.value = 777
    print(cell, cell.value)  # 输出:<Cell 'Sheet'.A6> 777
    
    cell2 = ws.cell(6, 1)  # 第6行第1列,即A6
    print(cell2, cell2.value)  # 输出:<Cell 'Sheet'.A6> 777
    
    # 单元格坐标信息
    print(c.coordinate)  # 单元格坐标,例如A6
    print(c.column_letter)  # 单元格列名,例如A
    print(c.col_idx)  # 单元列下标,例如1
    print(c.row)  # 单元格所在行,例如6
    
    

    1.如果使用cell(row, column, value)获取,第一个参数是行,第二个参数是列,下标都是从1开始,例如,ws[“a6”]等同于ws.cell(6, 1),但如果指定了第三个参数value,则修改了该单元格的值
    2.只要访问了一个cell就会被创建,不管是否赋值

    根据上面的方式,我们可以通过循环来准备一下数据

    from openpyxl import Workbook
    
    wb = Workbook()
    ws = wb.active
    
    i = 1
    for x in range(1, 11):
        for y in range(1, 21):
            ws.cell(row=x, column=y, value=i)
            i += 1
    wb.save("test.xlsx")
    

    这样我们就得到了从1~200共200个(10行20列)单元格的数据
    在这里插入图片描述

    2.获取多个单元格

    2.1 通过范围取值
    from openpyxl import Workbook
    
    wb = Workbook()
    
    ws = wb.active
    
    i = 1
    for x in range(1, 11):
        for y in range(1, 21):
            ws.cell(row=x, column=y, value=i)
            i += 1
    
    # wb.save("test.xlsx")
    
    row_cells = ws[2]  # 选取第2行(下标从1开始)
    print(row_cells)  # 输出:(A2, B2, C2, D2, E2, F2, G2, H2, I2, J2, K2, L2, M2, N2, O2, P2, Q2, R2, S2, T2)
    
    col_cells = ws["b"]  # 选取B列
    print(col_cells)  # 输出:(B1, B2, B3, B4, B5, B6, B7, B8, B9, B10)
    
    row_range_cells = ws[2:5]  # 选取2、3、4、5共4行
    print(row_range_cells)  # 输出:
    # ((A2, B2, C2, D2, E2, F2, G2, H2, I2, J2, K2, L2, M2, N2, O2, P2, Q2, R2, S2, T2),
    # (A3, B3, C3, D3, E3, F3, G3, H3, I3, J3, K3, L3, M3, N3, O3, P3, Q3, R3, S3, T3),
    # (A4, B4, C4, D4, E4, F4, G4, H4, I4, J4, K4, L4, M4, N4, O4, P4, Q4, R4, S4, T4),
    # (A5, B5, C5, D5, E5, F5, G5, H5, I5, J5, K5, L5, M5, N5, O5, P5, Q5, R5, S5, T5))
    
    col_range_cells = ws["B:D"]  # 选取B、C、D共3列
    print(col_range_cells)  # 输出:
    # ((B1, B2, B3, B4, B5, B6, B7, B8, B9, B10),
    # (C1, C2, C3, C4, C5, C6, C7, C8, C9, C10),
    # (D1, D2, D3, D4, D5, D6, D7, D8, D9, D10))
    
    range_cells = ws["c3:f6"]  # 选取 C3到F6区域共16个元素
    print(range_cells)  # 输出:
    # ((C3, D3, E3, F3),
    # (C4, D4, E4, F4),
    # (C5, D5, E5, F5),
    # (C6, D6, E6, F6))
    
    

    1.以上输出应该类似<Cell ‘Sheet’.A2>、 <Cell ‘Sheet’.B2>,为了好看,简化为A2、B2的形式
    2.以上获取到的多个单元格,返回的是元组或元组套元组,可以通过遍历的方式访问或修改

    2.2 通过iter_rows或iter_cols取值

    iter_rows()与iter_cols()都可以指定最大最小的行列,下标从1开始
    返回结果是生成器

    ...
    # wb.save("test.xlsx")
    
    cells = ws.iter_rows(min_row=1, max_row=3, min_col=2, max_col=5)
    for cell in cells:
        print(cell)
    # 输出:
    # (B1, C1, D1, E1)
    # (B2, C2, D2, E2)
    # (B3, C3, D3, E3)
    
    cells = ws.iter_cols(min_row=1, max_row=3, min_col=2, max_col=5)
    for cell in cells:
        print(cell)
    # 输出:
    # (B1, B2, B3)
    # (C1, C2, C3)
    # (D1, D2, D3)
    # (E1, E2, E3)
    
    

    iter_cols和iter_rows都可以指定参数values_only=True,这样只返回值而不是cell对象

    也可以使用rows或columns属性遍历全部行或列,values属性取出所有值,它们都得到迭代器,但是注意只读模式下columns属性无效

    for cell in ws.rows:
        print(cell)
    
    for cell in ws.columns:
        print(cell)
    
    for row in ws.values:
        for value in row:
            print(value)
    

    3.操作单元格

    3.1合并单元格

    合并单元格,会保留最左上角的单元格的数据和样式,其他单元格会被清空,即使取消合并。即,合并之后只保留左上角第一个单元格的数据和样式

    from openpyxl import Workbook
    
    wb = Workbook()
    ws = wb.active
    i = 1
    for x in range(1, 11):
        for y in range(1, 21):
            ws.cell(row=x, column=y, value=i)
            i += 1
    
    print(ws["C2"].value)  # 输出:23
    ws.merge_cells("A1:F3")
    ws.unmerge_cells("A1:F3")
    print(ws["C2"].value)  # 输出:None
    # 等同于下面的代码
    # ws.merge_cells(start_row=1, start_column=1, end_row=3, end_column=6)
    # ws.unmerge_cells(start_row=1, start_column=1, end_row=3, end_column=6)
    wb.save("./test.xlsx")
    
    3.2 删除或插入行列
    from openpyxl import Workbook
    
    wb = Workbook()
    ws = wb.active
    i = 1
    for x in range(1, 11):
        for y in range(1, 21):
            ws.cell(row=x, column=y, value=i)
            i += 1
    
    ws.insert_cols(5)  # 在第5列即E列插入1列,原来的E列及后面的列都往后移动
    ws.insert_rows(2, 3)  # 在第2行后面插入3行
    ws.delete_cols(2, 3)  # 从2列开始往后删除3列
    ws.delete_rows(5, -3)  # 从5行开始往前删除3行,即删除第4、3、2行
    
    wb.save("./test.xlsx")
    
    
    3.3 移动单元格

    可以使用move_range()合并指定范围的单元格,但是注意,如果移动到的位置原来有数据会被覆盖掉,移动之后公式会丢失,可以通过设置translate=True来更新,默认是False

    from openpyxl import Workbook
    
    wb = Workbook()
    ws = wb.active
    i = 1
    for x in range(1, 11):
        for y in range(1, 21):
            ws.cell(row=x, column=y, value=i)
            i += 1
    
    ws.move_range("B1:D3", rows=6, cols=-1, translate=False)  # 移动单元格,向下移动6行,向左移动1列
    
    wb.save("./test.xlsx")
    
    
    展开全文
  • 来源:Python中文社区OpenPyXL 使您能够以多种不同的方式设置单元格的样式。样式化单元格会让您的电子表格充满魅力!这将有助于将它们与其他电子表格区分开来。但是请不要过度使用, 如...
  • 设置excel字体,基本字体相关设置主要有字体类型、字号大小、是否加粗、是否斜体、对齐方式、下画线、删除线、字体颜色等。 需要用到Font()函数。excel实现方式: python实现方式: name用来说明要设置的字体类型,...
  • python openpyxl 合并单元格

    千次阅读 2020-01-06 19:34:26
    合并单元格时,除左上角以外的所有单元格都将从工作表中删除。为了携带合并单元格的边界信息,合并单元格的边界单元格被创建为MergeCells,其值始终为None。有关格式化合并单元格的信息,请参见样式化合并单元格。 ...
  • import openpyxl # excel 数据样式设置类 from openpyxl.styles import Font, PatternFill, Border, Side, Alignment 加载excel数据表格 # 读取表格数据 wb = openpyxl.load_workbook('python集中营.xlsx'...
  • Python 用openpyxl设置Excel单元格样式(字体样式、行列宽高、对齐方式、边框、填充和渐变)
  • openpyxl.load_workbook(u'/Users/edz/Desktop/工作簿1.xlsx') ws = wb['Sheet1'] try: # hdl_utils.excel_style(ws=ws, delete_column=(3, 1), ) # for me in ws.merged_cells: ...
  • 运用pandas和openpyxl删除空行以及合并单元格 在工作中,我们有时会碰到这样一个问题,需要把一个表格的空行删除以及合并单元格,删除空行对于pandas来说小菜一碟,但是合并单元格呢,emmmmm,暂时没有想到更好的...
  • 使用pandas处理excel,并使用Openpyxl修改单元格格式使用pandas处理excel,并使用Openpyxl修改单元格格式需求处理基本流程查询资料过程1.读取数据,2.指标的计算:计算较为简单,新指标由某几列的四则运算生成,放...
  • 最近刚学openpyxl,练习代码时发现一次性读取多个单元格数据时比较麻烦,代码的可读性往往不高,查了网上的中文资料也不没找到什么好的解决方案,于是自己模仿array的写法,写了个简单的函数提取多个单元格内容到一...
  • 接下来我们来学习一下openpyxl这个python模块中的其他知识,本次文章我们来学习一下单元格(cell)操作的相关知识。 1.读取和设置单元格内容 上篇关于openpyxl的文章中我们介绍了一些基础的操作,也包含了读取和...
  • python-openpyxl操作excel

    2020-12-06 00:34:37
    python 读写 excel有很多选择,但是,方便操作的库不多,在我尝试了几个库之后,我觉得两个比较方便的库是xlrd/xlwt、openpyxl。之所以推荐这两个库是因为这两个库分别操作的是不同版本的excel,xlrd操作的是xls/...
  • 用Python中openpyxl处理excel设置单元格格式

    万次阅读 多人点赞 2019-04-22 23:02:39
    from openpyxl import load_workbook import datetime wb = load_workbook(r'D:\Pythontest\reptile\豆瓣排名250.xlsx') #创建一个sheet ws1=wb.create_sheet("mysheet") #设定sheet的名字 ws1.title='newtitle' ...
  • TOC 背景       ...但是在存储为二维表格的时候需要处理 某一个单元格中的 空格问题 下面是处理结果 # 读取数据,把excel中的一个table按行读取出来,存入一个二维的li
  • Thanks import os from openpyxl import load_workbook import csv for subdir, dirs, files in os.walk("C:\Users\Alan\Downloads\Knowledge\HOW DO I"): for file in files: filepath = subdir + os.sep + file ...
  • OpenPyXL库 --单元格样式设置单元格样式的控制,依赖openpyxl.style包,其中定义有样式需要的对象,引入样式相关:from openpyxl.styles import PatternFill, Font, Alignment, Border, SideBorder 边框 Side 边线...
  • 再次编辑中,这次是在使用删除列的时候发现,合并单元格会出现漏删除情况,才想到用拆分单元格,没想到unmerge_cells(),worksheet.merged_cells返回的合并单元格对象居然不能迭代, 函数参数也变了,居然可以直接...
  • 插入删除行和列、移动单元格插入删除行和列使用下列方法插入删除行和列:openpyxl.worksheet.worksheet.Worksheet.insert_rows()openpyxl.worksheet.worksheet.Worksheet.insert_cols()openpyxl.worksheet.worksheet...
  • openpyxl 单元格样式处理

    千次阅读 2020-12-19 14:07:33
    openpyxl 单元格给样式处理 from openpyxl.styles import Font, PatternFill, Border, Side, Alignment, Color from openpyxl import load_workbook dest_filename = 'data.xlsx' # 加载工作簿 wb = load_workbook...
  • 我就废话不多说了,大家还是直接看代码吧~from openpyxl import Workbookfrom openpyxl import load_workbookfrom openpyxl.styles import NamedStyle, Border, Side, Alignment# 创建一个工作薄wb = Workbook()# ...
  • 单元格 单元格位置作为工作表的键直接读取: >>> c = ws['A4'] 为单元格赋值: >>> ws['A4'] = 4 >>> c.value = 'hello, world' 行
  • I'm trying to delete cells from an Excel spreadsheet using openpyxl. It seems like a pretty basic command, but I've looked around and can't find out how to do it. I can set their values to None, but.....
  • python 使用 openpyxl 修改表格中的内容

    千次阅读 2020-08-25 11:29:38
    python 使用 openpyxl 修改表格中的内容 1、向某个格子中写入内容并保存2、向表格中插入行数据 .append()3、在 python 中使用 excel 函数公式4、插入空行和空列 .insert_cols()和.insert_rows()5、删除行和列 ....

空空如也

空空如也

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

openpyxl删除单元格