zoukankan      html  css  js  c++  java
  • python 处理 excel 基本操作

      都说 python 处理 excel 简单,那怎么个简单法呢?接下来简单的了解下:

      这里用的是包 openpyxl,没有的小伙伴需要下载一下:

    pip  install openpyxl

      接着,我们准备好测试的 excel 文件,大概有以下内容: 

     

       准备一下python 入口文件:(导入使用的包)

    # -*- coding: utf-8 -*-
    
    import openpyxl
    
    def main():
        # 导入 excel 文件
        wb = openpyxl.load_workbook('test.xlsx')
        return wb
    
    
    # file onload
    if __name__ == '__main__':
        # 获取读取的文件对象
        wb = main()

      使用 load_workbook('路径/文件名') 可以读取指定的 excel 文件到内存中。

      有一堆的属性来获取各种信息:

    def showInfo(wb):
        # 获取工作表
        sheets = wb.get_sheet_names()
        print(sheets)
        # 当前激活的工作表
        sheet = wb.active
        print(sheet.title)
        # 最大行数
        print sheet.max_row
        # 最大列数
        print sheet.max_column
        # 获取当前单元格
        cell = sheet['A2']
        #
        print(cell.value)
        # 行下标
        print(cell.row)
        # 列下标
        print(cell.column)
        # 坐标
        print(cell.coordinate)

     

       或者高级点,可以直接获取有内容的单元格的信息:

    def get_cells(wb):
        # 当前激活的工作表
        sheet = wb.active
        # 按下标获取单元格
        cell1 = sheet.cell(row=2, column=1)
        print(cell1.value)
        for i in range(1, 8, 2):
            print i, sheet.cell(row=i, column=1).value
    
        print '
    '
        # 选定区域获取表格内容
        for rowOfCellObjects in sheet['A1': 'C3']:
            for cellObj in rowOfCellObjects:
                print cellObj.coordinate, cellObj.value
            print 'End of row'
    
        print '
    '
        print tuple(sheet['A1': 'C3'])

      写入数据:(保存时建议存储为新文件,避免破坏初始数据没法修复)

    def write_data(wb):
        # 根据名称查询工作表
        sheet = wb.get_sheet_by_name('Sheet1')
        print sheet.title
    
        sheet['D1'] = 'Hello world!'
        print(sheet['D1'].value)
        # 保存,建议存成新文件,避免搞坏数据没法修复
        wb.save('write_data.xlsx')

      设置字体样式等:

    def set_font_style(wb):
        # 根据名称查询工作表
        sheet = wb.get_sheet_by_name('Sheet1')
        # 创建 Font 对象
        fontObj1 = Font(name='Times New Roman', bold=True)
        sheet['D2'].font = fontObj1
        sheet['D2'] = 'Bold Times New Roman'
    
        fontObj2 = Font(size=24, italic=True)
        sheet['D3'].font = fontObj2
        sheet['D3'] = '24 pt Italic'
        wb.save('set_font_style.xlsx')

      设置公式计算:

    def set_formula(wb):
        # 根据名称查询工作表
        sheet = wb.get_sheet_by_name('Sheet1')
        sheet['D4'] = 1
        sheet['D5'] = 2
        sheet['D6'] = 3
        sheet['D7'] = '=SUM(D4: D6)'
        wb.save('set_formula.xlsx')

      设置行高列宽:

    def set_width_height(wb):
        # 根据名称查询工作表
        sheet = wb.get_sheet_by_name('Sheet1')
        sheet['A1'] = 'Tall row'
        sheet['B2'] = 'Wide column'
        # 这里注意,行用的是数字下标
        sheet.row_dimensions[1].height = 70
        sheet.column_dimensions['B'].width = 20
        wb.save('set_width_height.xlsx')

      设置固定行:

    def freeze_panes(wb):
        # 根据名称查询工作表
        sheet = wb.get_sheet_by_name('Sheet1')
        sheet.freeze_panes = 'A2'
        wb.save('freeze_panes.xlsx')
        # 要取消固定,则设置 None 或者 A1

      合并指定单元格:

    def merge_cell(wb):
        # 根据名称查询工作表
        sheet = wb.get_sheet_by_name('Sheet1')
        # 注意参数之间由 : 连接,没有空格!
        sheet.merge_cells('A1:D3')
        # 合并的单元格设置值,只能设置左上坐标单元格
        sheet['A1'] = 'Twelve cells merged together.'
        wb.save('merge_cell.xlsx')

      将合并的单元格拆分:

    def unmerge_cell():
        # 打开之前合并过单元格的文件
        wb = openpyxl.load_workbook('merge_cell.xlsx')
        # 根据名称查询工作表
        sheet = wb.get_sheet_by_name('Sheet1')
        # 完整的合并的始末位置。原值会留在左上位置
        sheet.unmerge_cells('A1:D3')
        wb.save('unmerge_cell.xlsx')

      入口测试调用:

    # file onload
    if __name__ == '__main__':
        # 获取读取的文件对象
        wb = main()
    
        # 展示相关信息
        # showInfo(wb)
    
        # 获取选定区域表格
        # get_cells(wb)
    
        # 存数据
        # write_data(wb)
    
        # 设置文字样式
        # set_font_style(wb)
    
        # 设置公式计算
        # set_formula(wb)
    
        # 设置行高列宽 * 有错误,待研究
        set_width_height(wb)
        
        # 冻结行
        # freeze_panes(wb)
    
        # 合并单元格
        # merge_cell(wb)
    
        # 取消合并单元格
        # unmerge_cell()
    
        print('Done')

      还有其他的表格、图表什么的暂时用不到,这些先够用了~

  • 相关阅读:
    JavaScript进阶-BOM和DOM
    JavaScript基础
    CSS2-属性
    CSS1-选择器
    HTML-常用标签
    判断回文
    课堂作业
    动手动脑
    原码反码补码
    Java第一次考试作业
  • 原文地址:https://www.cnblogs.com/guofan/p/12696126.html
Copyright © 2011-2022 走看看