openpyxl 的使用记录

这里主要是把之前用到的一些 python 操作excel的一些基本用法记录一下

python 中的操作excel的库

openpyxl

openpyxl中 Workbook 是工作簿的类, 其中sheet是一张工作表

加载excel

from openpyxl import load_workbook
load_workbook("path_to_wxcel.xlsx")

获取所有sheet名称

from openpyxl import Workbook
wb = Workbook()
sheet_names = wb.sheetnames
sheet_names = wb.get_sheet_names()

获取对应的sheet

from openpyxl import Workbook
wb = Workbook()
ws = wb.get_sheet_by_name("your_sheet_name")
ws = wb.active

获取对应的单元格的值

from openpyxl import Workbook
wb = Workbook()
ws = wb.get_sheet_by_name("your_sheet_name")
print ws["A1"].value
print ws.cell(row=1, column=1).value

设置单元格的值

通常是使用第二种方式

ws["A1"].value = "1"
ws.cell(row=1, column=1, value="1")

设置字体颜色

from openpyxl import Workbook
from openpyxl.styles import Font
from openpyxl.styles.colors import RED, YELLOW

font = Font(color=RED)
wb = Workbook()
ws = wb.active
cell = ws.cell(row=1, column=1)
cell.font = font

设置对齐方式 和 宽 高

from openpyxl import Workbook
from openpyxl.styles.alignment import Alignment
wb = Workbook()
ws = wb.active

alignment = Alignment(horizontal='distributed', vertical='top', wrap_text=True, indent=1)

# 下面分别设置宽高
for item in ws.columns:
    ws.column_dimensions[item[0].column].width = 20

for item in ws.rows:
    ws.row_dimensions[item[0].row].height = 16
    
for row in ws.iter_rows():
    for cell in row:
        cell.alignment = alignment

# 上面的做法效率有些低,因为需要获取到每个单元格。
# 可以找更高效的设置方式,欢迎在里面讨论
# 补充
# 可以手动的获取最大的行和列数,然后生成列的 ABC 形式
# 然后通过 ws.column_dimensions["A"].width = 20 的方式设置
# 看下面这个函数

转换函数

def to_abc(x):
	"""将十进制数转换为26进制,并且换位excel 中的abc格式"""
    code = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    # 将十进制数转换为26进制,并且换位excel 中的abc格式
    k = 26
    r = []
    if not x:
        return ""
    while x:
        r.append(x % k)
        x /= k
    return "".join([code[item - 1] for item in r[::-1]])
print to_abc(28) # "AB"

文章就是要公开,竟然看到csdn为了让用户付费vip 推出vip 文章,真是个心机boy!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章