2020国产成人精品视频,性做久久久久久久久,亚洲国产成人久久综合一区,亚洲影院天堂中文av色

分享

openpyxl | Python操作Excel利器

 Four兄 2019-08-25

Python-openpyxl操作生成Excel

初識(shí)

安裝

pip install openpyxl

邏輯

一個(gè)excel文檔就是一個(gè)工作簿 Workbook,每個(gè)工作簿對(duì)應(yīng)可以有很多個(gè)表格sheet,每個(gè)表格頁,由單元格組成。openpyxl通過操作這三個(gè)層級(jí),完成對(duì)excel的操作。

工作簿:

表格頁:

單元格:

基本用法

創(chuàng)建工作簿 Workbook

from openpyxl import Workbook

#創(chuàng)建一個(gè)工作簿對(duì)象
workbook = Workbook()
#保存這個(gè)工作簿,命名為test
workbook.save('test.xlsx')

打開現(xiàn)有工作簿

from openpyxl  import load_workbook
#打開當(dāng)前路徑下的test表格
workbook = load_workbook('test.xlsx')

創(chuàng)建表

from openpyxl import load_workbook
#打開當(dāng)前路徑下的test表格
workbook = load_workbook('test.xlsx')
#創(chuàng)建一個(gè)名字叫sheet的表格
sheet = wb.create_sheet('test.xlsx')
#任何操作都需要保存
workbook.save('test.xlsx')

選擇現(xiàn)有的表

from openpyxl  import load_workbook
#打開當(dāng)前路徑下的test表格
workbook = load_workbook('test.xlsx')
#選擇名字為first_sheet的表格頁
sheet = workbook['first_sheet']

刪除表

from openpyxl import load_workbook
#打開當(dāng)前路徑下的test表格
workbook = load_workbook('test.xlsx')
#選擇名字為first_sheet的表格頁
sheet = workbook['first_sheet']
#刪除這張表
workbook.remove(sheet)

訪問單元格

#方法1
cell1 = sheet['A1']
#方法2
cell2 = sheet.cell(row=1,column=2)

#設(shè)置單元格的值
cell1.value = '123456'

#合并A1和A2單元格
sheet.merge_cells('A1:A2')

高級(jí)用法

設(shè)置表格樣式

先設(shè)置表格的樣式模板

再將模板賦予需要更改樣式的單元格

from openpyxl.styles import *

#先設(shè)置表格的樣式模板,再將模板賦予需要更改樣式的單元格
#設(shè)置樣式模板,這里只列舉一部分常用的樣式
#表格邊緣線的樣式,thin表示有框線,框線顏色為黑色
thin = Side(border_style='thin', color='000000')
#設(shè)置表格上下左右都有黑色框線樣式
all_border = Border(top=thin, left=thin, right=thin, bottom=thin)
#設(shè)置字體樣式,設(shè)置字體為 微軟雅黑,單下劃線,顏色為藍(lán)色,字體加粗
yahei_font_u = Font(name=u'微軟雅黑',underline='single',color='0000FF',bold=True)
#設(shè)置背景顏色,設(shè)置充滿方式為充滿,顏色為黃色
yellow_fill = PatternFill(fill_type='solid',fgColor='FFD700')
#設(shè)置字體在表格中的位置,設(shè)置字體為上下區(qū)中,字符長度超過表格寬度時(shí)自動(dòng)換行
alignment_wrap_content = Alignment(wrap_text=True,horizontal='center',vertical='center')

#設(shè)置完成后,改變單元格樣式,這樣這個(gè)單元格的樣式就更改為模板的樣式了
cell = sheet.row(row=1,column=2)
cell.fill = self.yellow_fill
cell.font = self.yahei_font_u
cell.border = self.all_border
cell.alignment = self.alignment_wrap_content

#如果要設(shè)置的單元格為合并后的,那么多個(gè)單元格樣式都要設(shè)置

隱藏和折疊

#隱藏第二行
sheet.row_dimensions[2].hidden=1
#折疊第2行到第5行
sheet.row_dimensions.group(2,5,hidden=True)

設(shè)置超鏈接

#設(shè)置這個(gè)單元格的超鏈接為 跳轉(zhuǎn)到 test工作簿 Sheet表格的 A1單元格
cell.hyperlink = 'test.xlsx#Sheet!A1'

實(shí)戰(zhàn)

原始數(shù)據(jù)

轉(zhuǎn)換效果

from openpyxl import *
from openpyxl.styles import *

class MakeExcel():

def __init__(self):
self.dict = {
'英雄聯(lián)盟': 'https://lol.qq.com/main.shtml',
'地下城與勇士': 'https://dnf.qq.com/?ADTAG=media.innerenter.gamecom.navigation',
'使命召喚Online': 'https://codol.qq.com/?ADTAG=media.innerenter.gamecom.navigation',
'疾風(fēng)之刃': 'https://jf.qq.com/?ADTAG=media.innerenter.gamecom.navigation',
'冒險(xiǎn)島2':'https://mxd2.qq.com/?ADTAG=media.innerenter.gamecom.navigation',
'天涯明月刀':'https://wuxia.qq.com/?ADTAG=media.innerenter.gamecom.navigation',
'御龍?jiān)谔?: 'https://yl.qq.com/?ADTAG=media.innerenter.gamecom.navigation',
'劍靈': 'https://bns.qq.com/?ADTAG=media.innerenter.gamecom.navigation',
'流放之路': 'https://poe.qq.com/?ADTAG=media.innerenter.gamecom.navigation',
'軒轅傳奇2': 'https://xy2.qq.com/?ADTAG=media.innerenter.gamecom.navigation',
'斗戰(zhàn)神': 'https://dzs.qq.com/?ADTAG=media.innerenter.gamecom.navigation',
'QQ三國': 'https://sg.qq.com/web201706/index.shtml?ADTAG=media.innerenter.gamecom.navigation',
}
self.excel_template()
self.make()

#表格樣式模板
def excel_template(self):

# 表格邊緣線的樣式,thin表示有框線,框線顏色為黑色
self.thin = Side(border_style='thin', color='000000')

# 設(shè)置表格上下左右都有黑色框線樣式
self.all_border = Border(top=self.thin, left=self.thin, right=self.thin, bottom=self.thin)

# 設(shè)置普通字體樣式
self.yahei_normal = Font(name=u'微軟雅黑')

#設(shè)置標(biāo)題字體樣式
self.yahei_title = Font(name=u'微軟雅黑',bold=True)

# 設(shè)置鏈接字體樣式,設(shè)置字體為 微軟雅黑,單下劃線,顏色為藍(lán)色
self.yahei_u = Font(name=u'微軟雅黑', underline='single', color='0000FF')

# 設(shè)置背景顏色,設(shè)置充滿方式為充滿,顏色為黃色
self.yellow_fill = PatternFill(fill_type='solid', fgColor='FFD700')

# 設(shè)置字體在表格中的位置,設(shè)置字體為上下區(qū)中,字符長度超過表格寬度時(shí)自動(dòng)換行
self.alignment_wrap = Alignment(wrap_text=True, horizontal='center', vertical='center')

#設(shè)置表格樣式,根據(jù)傳入的樣式設(shè)置傳入的單元格對(duì)象的樣式
def make_cell_style(self,cell,style):

#普通單元格樣式
if style == 'normal':
cell.font = self.yahei_normal
cell.border = self.all_border
cell.alignment = self.alignment_wrap
#標(biāo)題單元格樣式
elif style == 'title':
cell.fill = self.yellow_fill
cell.font = self.yahei_title
cell.border = self.all_border
cell.alignment = self.alignment_wrap
#地址單元格樣式
elif style == 'addr':
cell.font = self.yahei_u
cell.border = self.all_border
cell.alignment = self.alignment_wrap

#生成表格
def make(self):
#創(chuàng)建一個(gè)工作簿,選用Sheet這張表
workbook = Workbook()
sheet = workbook['Sheet']

#設(shè)置標(biāo)題的名稱
cell1 = sheet['A1']
cell2 = sheet['B1']
cell1.value = '名稱'
cell2.value = '地址'

#設(shè)置列框
sheet.column_dimensions['A'].width = 20.0
sheet.column_dimensions['B'].width = 100.0

#設(shè)置標(biāo)題樣式
self.make_cell_style(cell1, 'title')
self.make_cell_style(cell2, 'title')

#設(shè)置游戲和地址的樣式
cur_row = 2
for key in self.dict.keys():

#設(shè)置名稱和地址的值
temp_cell_A = sheet.cell(row=cur_row, column=1)
temp_cell_B = sheet.cell(row=cur_row, column=2)
temp_cell_A.value = key
temp_cell_B.value = self.dict[key]
#設(shè)置地址超鏈接
temp_cell_B.hyperlink = self.dict[key]
#設(shè)置名稱和地址的樣式
self.make_cell_style(temp_cell_A, 'normal')
self.make_cell_style(temp_cell_B, 'addr')
cur_row = cur_row + 1

#從第六行開始折疊
sheet.row_dimensions.group(6, cur_row, hidden=True)

workbook.save('游戲.xlsx')

MakeExcel()

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請遵守用戶 評(píng)論公約

    類似文章 更多