python openpyxl讀寫Excel


 

我們工作中經常需要 導入數據到Excel、從Excel導出數據、對Excel中的數據進行處理。如果 要處理的數據量很大,人工操作非常費時間。我們可以通過Python程序,自動化Excel的數據處理,幫我們節省大量的時間。

python中可以用來處理Excel的庫比較多本文以 openpyxl 實現Excel的讀寫已經樣式設置

安裝openpyxl庫

openpyxl 庫既可以讀文件、也可以寫文件、也可以修改文件。

但是,openpyxl 庫不支持老版本 Office2003 的 xls 格式的Excel文檔,如果要讀寫xls格式的文檔,可以使用 Excel 進行相應的格式轉化。

首先我們安裝openpyxl庫,執行下面的命令:

pip install openpyxl

點擊這里,查看openpyxl參考文檔

創建Excel以及寫入數據

#創建以及讀寫Excel
from openpyxl import Workbook

#創建一個Workbook對象
wb = Workbook()

#指定創建的Excel文件名字
dest_filename = '員工信息.xlsx'

#創建時會自動產生一個sheet,通過active獲取
ws1 = wb.active

#對於初始產生的sheet標題修改為
ws1.title = "薪資表"

#創建一個sheet,名為"年齡表",在當前Excel表中放在第一位,0代表位置
ws2 = wb.create_sheet("年齡表", 0)

#創建一個sheet,名為"工齡表",在當前Excel表中放在第一位,1代表位置
ws3 = wb.create_sheet("工齡表", 1)

#根據名稱獲取某個sheet對象
sh = wb['薪資表']

#給title為薪資表的sheet 第一個單元格寫入內容
sh['A1'] = 'hello'

#獲取某個(下面代碼是獲取A1)單元格的內容
print(sh['A1'].value)

#根據行號和列號,給單元格寫入內容,需要注意行號和列號是從1開始
sh.cell(2,2).value = 'Augus'

#根據行號和列號,獲取某個單元格的內容
print(sh.cell(2,2).value)

#保存文件
wb.save(filename=dest_filename)

下面的示例代碼 將 保存在字典中的工齡表的內容 寫入到excel文件中

from openpyxl import Workbook

name_age = {
    '段天涯' :  10,
    '上官海棠' :  9,
    '歸海一刀' :  9,
    '成是非' :  2,
    '古三通' :  50,
    '朱無視' :  52,
    '曹正淳' :  43,
    '萬三千' :  23,
}


#創建一個Excel的workbook對象
wb = Workbook()

#創建時會自動產生一個sheet,通過active獲取
ws1 = wb.active

#指定自動產生的sheet的title
ws1.title = '工齡表'

#寫標題
ws1['A1'] = '姓名'
ws1['B1'] = '工齡'

#寫入內容,從第二行開始,第一行是title
row = 2
#items()方法把字典中每對key和value組成一個元組,並把這些元組放在列表中返回 for name,age in name_age.items(): ws1.cell(row,1).value = name ws1.cell(row,2).value = age row += 1 wb.save('工齡信息.xlsx')

如果你的數據在一個列表或者元組中,可以使用append方法在sheet的末尾添加新行,寫入數據,比如

from openpyxl import Workbook

name_ages = [
    ('段天涯',10),
    ('上官海棠',9),
    ('歸海一刀' ,9),
    ('成是非', 2),
    ('古三通', 50),
    ('朱無視', 52),
    ('曹正淳',43),
    ('萬三千', 23),
]

#創建一個Excel的workbook對象
wb = Workbook()

#創建時會自動產生一個sheet,通過active獲取
ws1 = wb.active

#指定自動產生的sheet的title
ws1.title = '工齡表'

#寫標題
ws1['A1'] = '姓名'
ws1['B1'] = '工齡'

for name_age in name_ages:
    ws1.append(name_age)

wb.save('工齡信息.xlsx')

修改Excel中的數據

如果你想 修改 已經存在的Excel 文件,也可以使用 openpyxl 庫。

修改單元格內容

比如

from openpyxl import load_workbook

#打開Excel文件
wb = load_workbook('工齡信息.xlsx')

#獲取sheet對象,
#這里面有一個sheetnames可以獲取當前表格所有sheet存放在一個列表中
sheet = wb['工齡表']

sheet['A1'] = '修改數據'

#指定不同的文件名,可以另存為別的文件,名字和原來相同,會在原文件修改
wb.save('工齡信息.xlsx')

插入行、插入列

sheet 對象的 insert_rows 和 insert_cols 方法,分別用來插入  和 

from openpyxl import load_workbook

#打開一個已有的文件
wb = load_workbook("工齡信息.xlsx")

#獲取指定sheet對象
sheet = wb['工齡表']

#在第二行的位置插入1行
sheet.insert_rows(2)

#在第四行的位置插入5行
sheet.insert_rows(4,5)

#在第二列的位置插入1列
sheet.insert_cols(2)

#在第二列的位置插入3列
sheet.insert_cols(2,3)

#保存文件(文件名相同在原文件修改,文件名不同則另存為)
wb.save('hello.xlsx')

刪除行、刪除列

sheet 對象的 delete_rows 和 delete_cols 方法,分別用來插入  和 , 比如

from openpyxl import load_workbook

#打開一個已有的文件
wb = load_workbook("hello.xlsx")
#獲取指定sheet對象
sheet = wb['工齡表']

#在第二行的位置刪除一行
sheet.delete_rows(2)

#在第四行的位置刪除五行
sheet.delete_rows(3,5)

#在第二列的位置刪除一列
sheet.delete_cols(2)

#在第二列的位置刪除三列
sheet.delete_cols(2,3)

#保存
wb.save('hello.xlsx')

文字 顏色、字體、大小

單元格中的 樣式風格 (包括 顏色、字體、大小、下划線 等) 都是通過 Font 對象設定的

點擊這里,即可查看RGB顏色值

from openpyxl import load_workbook
#需要導入Font對象和colors 顏色常量
from openpyxl.styles import Font,colors

#打開Excel文件,獲取文件對象信息
wb = load_workbook('工齡信息.xlsx')

#指定sheet
sheet = wb['工齡表']

#設置指定單元格字體顏色
sheet['A1'].font = Font(color=colors.BLUE, #使用預置的顏色常量
                        size=15,      #設定文字大小
                        bold=True,    #設定為粗體
                        italic=True   #設定為斜體
                        )

#可以根據RGB十六進制數字表示顏色
sheet['B1'].font = Font(color='00CED1')

# 指定整行 字體風格, 這里指定的是第5行
r_font = Font(color="8B0000")
# 第 1 到 50 列
for c in range(1, 51):
    sheet.cell(row=5, column=c).font = r_font

#指定整列 字體風格 這里指定第一列
c_font = Font(color='006400')
#取第一行到第十行
for r in range(1,11):
    sheet.cell(row=r,column=1).font = c_font

wb.save('工齡信息.xlsx')

 

單元格或行背景色

from openpyxl import load_workbook
#導入模式填充
from openpyxl.styles import PatternFill

#加載Excel文件
wb = load_workbook('工齡信息.xlsx')
#指定sheet
sheet = wb['工齡表']

#指定 某個單元格背景色
sheet['A1'].fill = PatternFill('solid', 'BCEE68')

#設置第二列的背景色
for x in range(1,11):
    #第二列10個單元格背景色設置為墨綠色
    sheet.cell(x,2).fill = PatternFill('solid', '2F4F4F')

#設置行背景色
for y in range(1,11):
    #設置第三行10個單元格背景為黃色
    sheet.cell(3,y).fill = PatternFill('solid', 'FFFF00')

wb.save('工齡信息.xlsx')

插入圖片

插入圖片到表格中

from openpyxl import Workbook, load_workbook
from openpyxl.drawing.image import Image

#創建Excel表格
wb = Workbook()
#獲取自動生成的sheet名
sheet = wb.active

# 設置文字圖片單元格的行高列寬
column_width = 12.25
row_height = 80.10

# 修改列D的列寬
sheet.column_dimensions['D'].width = column_width
# 修改行3的行高
sheet.row_dimensions['3'].height = row_height

img = Image('1.jpeg')
newsize = (90, 90)
# 這兩個屬性分別是對應添加圖片的寬高
img.width, img.height = newsize

# 向D3單元格內指定添加圖片
sheet.add_image(img, 'D3')

#保存
wb.save('工齡表.xlsx')

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM