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程序