• python_excel


     参考博文:https://blog.csdn.net/xugexuge/article/details/82628792

    一 相关说明:

    1、openpyxl(可读写excel表)专门处理Excel2007及以上版本产生的xlsx文件;2007一下的版本为xls结尾的文件,需要使用 xlrd和xlwt库进行操作


    2、excel表的文字编码如果是“gb2312” 读取后就会显示乱码,请先转成Unicode


    3、workbook: 工作簿,一个excel文件包含多个sheet。


    4、sheet:工作表,一个workbook有多个,表名识别,如“sheet1”,“sheet2”等。


    5、cell: 单元格,存储数据对象

    二 openpyxl的使用方法

    1、新建

    import openpyxl
     
    # 新建一个空excel,表名为sheet,文件名为test
    wb = openpyxl.Workbook()  # 创建新的excel文件,一个工作簿(workbook)在创建的时候同时至少也新建了一张工作表(worksheet)
    wb.save('test.xlsx')
    

    2.表操作

    注:从此操作往后都使用如下的测试数据

    import openpyxl
    import openpyxl.styles
     
    # 打开已有的excel
    wb = openpyxl.load_workbook("test.xlsx")
     
    # ------------------ 表操作 ------------------
    # 新建sheet表
    wb.create_sheet(index=2, title="sheet3")  # 可通过index控制创建的表的位置
     
    # 获取所有表名
    sheet_names = wb.sheetnames  # 得到工作簿的所有工作表名 结果: ['Sheet1', 'Sheet2', 'Sheet3']
     
    # 根据表名删除sheet表
    wb.remove(wb[sheet_names[2]])  # 删除上一步建的第3个工作表
     
    # 根据表名打开sheet表
    sheet1 = wb[sheet_names[0]]  # 打开第一个 sheet 工作表
    

    3.读取数据

    # ------------------ 读取数据 ------------------
     
    # 获取单元格数据
    sheet1_max_colum = sheet1.max_column  # 获取最大列数 结果:3
    # ws = wb.active  # 获取当前活动的sheet页
    sheet1_max_row = sheet1.max_row  # 获取最大行数 结果:10
    A1_value = sheet1['A1'].value  # 获取单元格A1值 结果:a1
    A1_column = sheet1['A1'].column  # 获取单元格A1列值 结果: A
    A1_row = sheet1['A1'].row   # 获取单元格A1行号 结果: 1
    A1 = sheet1.cell(row=1, column=1).value  # 获取第一行第一列的单元格值 结果:a1
     
    # 获取C列的所有数据
    list_sheet1_column_C = []
    for i in sheet1["C"]:
        list_sheet1_column_C.append(i.value)
     
    # 获取第1行的所有数据
    list_sheet1_row_1 = []
    for i in sheet1[1]:
        list_sheet1_row_1.append(i.value)
     
    # 读取所有数据
    list_sheet1_all = []
    for row in sheet1.rows:
        for cell in row:
            list_sheet1_all.append(cell.value)  # 按行循环获取所有的值,保存在 list_sheet1_all 列表中
    

    4.写入数据

    # ------------------ 写入数据 ------------------
    sheet1.cell(row=1, column=2, value="B1")  # 修改第一行第二列的单元格的值为B1
    sheet1["A1"] = "A1"  # 直接修改A1单元格的值为A1
    sheet1["B11"] = "B11"  # 新增B11单元格的值为B11
    sheet1.title = "test_sheet"  # 修改sheet1的表名为test_sheet
    

    5.表格样式调整

    # ------------------ 表格样式调整 ------------------
    # 表格样式支持:字体、颜色、模式、边框、数字格式等
     
    # A1单元格 等线24号加粗斜体,字体颜色浅蓝色
    sheet1["B11"].font = openpyxl.styles.Font(name="宋体", size=24, italic=True, color="00CCFF", bold=True)
     
    # B1单元格 水平上下居中
    sheet1["B11"].alignment = openpyxl.styles.Alignment(horizontal="center", vertical="center")
     
    # 第一行高度设置为30
    sheet1.row_dimensions[1].height = 30
     
    # C列的宽度设置为35
    sheet1.column_dimensions["C"].width = 35
    

    6.保存文件

    # 保存文件,注意文件打开时文件保存会出错
    wb.save("test.xlsx")
    

    7.实际示例

    需求:如下图,如果前一列值为“日期”,把后一列同一行的数据值改为“7”

     代码:

    #!/usr/bin/python3
    # -*- coding: utf-8 -*-
    
    
    import openpyxl
    
    
    def op_excel(sheet1):   
        sheet1_max_colum = sheet1.max_column
        col_num = None
        for i in range(11, sheet1_max_colum):
            if sheet1.cell(row=4, column=i).value == '数据类型':
                col_num = i
        if col_num == 14:
            sheet1_max_row = sheet1.max_row
            for i in range(4, sheet1_max_row):
                # print("22222222",sheet1['N%s' % i].value)
                if sheet1['N%s' % i].value == '日期':
                    # print(sheet1['O%s'%i].value)
                    sheet1['O%s' % i].value = 8
    
    
    if __name__ == '__main__':
        wb = openpyxl.load_workbook(r'C:Users1Desktopxxx.xlsx')  # 打开excel文件
        sheets = wb.sheetnames
        sheet1 = wb[sheets[0]]
        op_excel(sheet1)
        wb.save(r"C:Users1Desktop1xxx.xlsx")
    
  • 相关阅读:
    SAP扫盲系列之二:SAP ABAP应用服务器的组成部分
    SAP扫盲系列之一:什么是SAP系统和应用服务器
    SAP CRM中间件下载时,为什么有时候会生成一个奇怪的BDOC容器
    SAP Cloud for Customer ABSL的一些优化
    How to test Delta download in CRM Side
    SAP CRM中间件下载时数据库表CRMATAB为空的处理方法
    如何关闭SAP CRM中间件的delta download方式
    SAP CRM Fiori应用冗余round trip的原因分析
    SAP CRM WebClient UI上以html格式显示note的问题讨论
    微信授权登录
  • 原文地址:https://www.cnblogs.com/fmgao-technology/p/10490065.html
Copyright © 2020-2023  润新知