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!

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