Python办公自动化-Task02

1、openpyxl包

import openpyxl

wb = openpyxl.load_workbook(root_path+'用户行为偏好.xlsx') #打开一个excel,openpyxl只能打开xlsx格式的表,xls 格式通过 xlwt 模块写,xlrd 模块读取

openpyxl.load_workbook(filename,read_only=False,keep_vba=False,data_only=False,keep_links=True)

        filename: str 类型,表示要打开的文件的相对/绝对路径;

        read_only: bool 类型,是否以只读模式打开文件,默认值为 False,可读写;

        keep_vba: bool 类型,是否保留文件中的 vba 内容(即使保留了也不一定在代码中能使用),默认值为         False,不保留;

        data_only: bool 类型,如果单元格中是 excel 公式,是以公式计算后的值的形式显示还是以公式内容形式显         示,默认值为 False,以公式内容形式展示;

        keep_links: bool 类型,是否保留单元格中的外链,默认值为 True,保留外链。

获取打开表中的表名清单:sht_names=wb.sheetnames 

选择打开某个sheet:sheet_nm=wb['Sheet3']

给单元格赋值:sheet_nm['A1'].value='你好'

在单元格中写入公式:sheet['B1'] = '=count(A:A)'

插入、删除列/行:

sheet_nm.insert_cols(idx,amount=1)  # idx是插入位置,amount是插入列数,默认是1

sheet_nm.insert_rows(idx,amount=1)  # idx是插入位置,amount是插入行数,默认是1

sheet_nm.delete_cols(idx=5, amount=2)  # idx是删除位置,amount是删除列数,默认是1

sheet_nm.delete_rows(idx=2, amount=5)  #  idx是删除位置,amount是删除行数,默认是1

移动区域:

sheet_nm.move_range('B3:E16',rows=1,cols=-1)  # 当数字为正即向下或向右,为负即为向上或向左

设置单元格格式:

from openpyxl.styles import Font

cell = sheet_nm['A1']

font = Font(name='黑体', size=20, bold=True, italic=True, color='FF0000')  #实例化一个 Font 对象

cell.font = font #把单元格按模式设置

注:仅为单个单元格设置,若统一设置区域的格式,用for循环对每个单元格做设置。

合并、取消合并单元格:

sheet_nm.merge_cells('A1:B2')  # 把A1:B2区域合并单元格

sheet_nm.unmerge_cells('A1:B2')  #取消A1:B2区域合并单元格

保存文件:

exl_1.save(filename) #保存为filename(带后缀)的excel文件

2、xlwings包

import xlwings as xw

app = xw.App(visible=True, add_book=False) #创建一个app应用,打开Excel程序

        visible:表示打开操作Excel过程是否可见

        add_book:表示启动app后是否创建新的工作簿

wb = app.books.open(filename) #打开一个工作簿(filename需要带后缀)

sht1 = wb.sheets.add('second_sht') # 在工作簿中新建一个sheet,起名为 second_sht

sht2 = wb.sheets('first_sht') # 选中已经存在的sheet

sht3 = wb.sheets[0] #过索引选择已存在的sheet

wb.sheets('first_sht').delete() #删除工作表

单元格操作

sht1.range('B1').value = 'Datawhale'  # 在工作表中指定位置插入数据

sht1.range('B2').value = ['DATAWHALE', 'FOR', 'THE', 'LEARNER'] # 在工作表指定位置插入多个数据 默认是横向插入

sht1.range('B3').options(transpose=True).value = [1, 2, 3, 4]  # 在工作表指定位置竖向插入多个数据,transpose=True表示转置

sht1.range('B7').value = [['a', 'b'], ['c', 'd']] # 在工作表指定位置开始插入多行数据 

sht1.range('B9').options(transpose=True).value = [['a', 'b'], ['c', 'd']]  # 在工作表指定位置开始插入多列数据

sht1.range('F2').formula = '=sum(B2:E2)' # 向单元格写入公式

a1_value=sht1.range('A1').value #获取A1单元格的值,range可以为区域

格式设置:

sht1.range('B3:C3').api.merge() #合并单元格

sht1.range('A1').api.Font.Color = (255,0,124) # 颜色

sht1.range('A1').api.Font.Name = '宋体'  # 字体

sht1.range('A1').api.Font.Size = 28  # 字体大小

sht1.range('A1').api.Font.Bold = True # 是否加粗

sht1.range('A1').api.NumberFormat = '0.0' # 数字格式

保存文件(使用xlwings退出程序,需要先保存文件,再关闭excel文件,然后退出excel程序):

wb.save(filename) #保存为filename的文件

wb.close() #关闭工作簿

app.quit() #退出Excel程序

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容