《用Python處理Excel表格》下篇來啦!
站在用戶的角度思考問題,與客戶深入溝通,找到利津網(wǎng)站設(shè)計(jì)與利津網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、申請(qǐng)域名、虛擬空間、企業(yè)郵箱。業(yè)務(wù)覆蓋利津地區(qū)。
身為工作黨或?qū)W生黨的你,平日里肯定少不了與Excel表格打交道的機(jī)會(huì)。當(dāng)你用Excel處理較多數(shù)據(jù)時(shí),還在使用最原始的人工操作嗎?現(xiàn)在教你如何用Python處理Excel,從此處理表格再也不加班,時(shí)間縮短數(shù)十倍!
上篇我們進(jìn)行了一些事前準(zhǔn)備,目的是用Python提取Excel表中的數(shù)據(jù)。而這一篇便是在獲取數(shù)據(jù)的基礎(chǔ)上,對(duì)Excel表格的實(shí)操處理。
第9行代碼用來指定創(chuàng)建的excel的活動(dòng)表的名字:
·不寫第9行,默認(rèn)創(chuàng)建sheet
·寫了第9行,創(chuàng)建指定名字的sheet表
第9行代碼,通過給單元格重新賦值,來修改單元格的值
第9行代碼的另一種寫法sheet['B1'].value = 'age'
第10行代碼,保存時(shí)如果使用原來的(第7行)名字,就直接保存;如果使用了別的名字,就會(huì)另存為一個(gè)新文件
插入有效數(shù)據(jù)
使用append()方法,在原來數(shù)據(jù)的后面,按行插入數(shù)據(jù)
·insert_rows(idx=數(shù)字編號(hào), amount=要插入的行數(shù)),插入的行數(shù)是在idx行數(shù)的下方插入
·insert_cols(idx=數(shù)字編號(hào), amount=要插入的列數(shù)),插入的位置是在idx列數(shù)的左側(cè)插入
·delete_rows(idx=數(shù)字編號(hào), amount=要?jiǎng)h除的行數(shù))
·delete_cols(idx=數(shù)字編號(hào), amount=要?jiǎng)h除的列數(shù))
move_range(“數(shù)據(jù)區(qū)域”,rows=,cols=):正整數(shù)為向下或向右、負(fù)整數(shù)為向左或向上
舉個(gè)例子:
openpyxl.styles.Font(name=字體名稱,size=字體大小,bold=是否加粗,italic=是否斜體,color=字體顏色)
其中,字體顏色中的color是RGB的16進(jìn)制表示
再者,可以使用for循環(huán),修改多行多列的數(shù)據(jù),在這里介紹了獲取的方法
Alignment(horizontal=水平對(duì)齊模式,vertical=垂直對(duì)齊模式,text_rotation=旋轉(zhuǎn)角度,wrap_text=是否自動(dòng)換行)
水平對(duì)齊:‘distributed’,‘justify’,‘center’,‘left’, ‘centerContinuous’,'right,‘general’
垂直對(duì)齊:‘bottom’,‘distributed’,‘justify’,‘center’,‘top’
當(dāng)然,你仍舊可以調(diào)用for循環(huán)來實(shí)現(xiàn)對(duì)多行多列的操作
設(shè)置行列的寬高:
·row_dimensions[行編號(hào)].height = 行高
·column_dimensions[列編號(hào)].width = 列寬
合并單元格有下面兩種方法,需要注意的是,如果要合并的格子中有數(shù)據(jù),即便python沒有報(bào)錯(cuò),Excel打開的時(shí)候也會(huì)報(bào)錯(cuò)。
merge_cells(待合并的格子編號(hào))
merge_cells(start_row=起始行號(hào),start_column=起始列號(hào),end_row=結(jié)束行號(hào),end_column=結(jié)束列號(hào))
拆分單元格的方法同上
unmerge_cells(待合并的格子編號(hào))
unmerge_cells(start_row=起始行號(hào),start_column=起始列號(hào),end_row=結(jié)束行號(hào),end_column=結(jié)束列號(hào))
create_sheet(“新的sheet名”):創(chuàng)建一個(gè)新的sheet表
第11行,使用title修改sheet表的名字
remove(“sheet名”):刪除某個(gè)sheet表
要?jiǎng)h除某sheet表,需要激活這個(gè)sheet表,即:將其作為活動(dòng)表(關(guān)于活動(dòng)表的定義請(qǐng)看前面文章開頭寫的有)下面8~11行代碼展示了原始活動(dòng)表與手動(dòng)更換活動(dòng)表,第13行代碼刪掉活動(dòng)表
背景知識(shí)
numpy與pandas
NumPy是 Python 語言的一個(gè)擴(kuò)展程序庫,支持大量的維度數(shù)組與矩陣運(yùn)算,此外也針對(duì)數(shù)組運(yùn)算提供大量的數(shù)學(xué)函數(shù)庫;pandas 是基于NumPy 的一種工具,該工具是為解決數(shù)據(jù)分析任務(wù)而創(chuàng)建的,我們需要利用Pandas進(jìn)行Excel的合并
1.下面的代碼生成了一個(gè)5行3列的包含15個(gè)字符的嵌套列表
(注意,第4行代碼:15是等于35的,如果是15對(duì)應(yīng)43,或者16對(duì)應(yīng)5*3都會(huì)報(bào)錯(cuò))
(注意,第5行代碼,雖然5行3列是15個(gè)數(shù)據(jù),但是可以指定數(shù)據(jù)從1開頭,到16結(jié)束)
2.添加表頭
使用pandas庫的DataFrame來添加表頭。關(guān)于打印的結(jié)果,把最左側(cè)的一列去掉之后會(huì)發(fā)現(xiàn)結(jié)果很和諧,這是因?yàn)樽钭髠?cè)的一列代表行號(hào)。此時(shí)xx變量的類型是
xlsxwriter模塊一般是和xlrd模塊搭配使用的,
xlsxwriter:負(fù)責(zé)寫入數(shù)據(jù),
xlrd:負(fù)責(zé)讀取數(shù)據(jù)。
1.創(chuàng)建一個(gè)工作簿
2.創(chuàng)建sheet表
3.寫入數(shù)據(jù)
python語言中的可以居中打印的方法如下:
1、首先python語言的軟件。
2、隨后在右上角的設(shè)置中找到打印。
3、隨后在python語言中的居中打印點(diǎn)擊打開即可。
#找到這個(gè)table_model設(shè)置表格屬性,
def table_model(data):
# 合并表格 ('SPAN',(第一個(gè)方格的左上角坐標(biāo)),(第二個(gè)方格的左上角坐標(biāo))),合并后的值為靠上一行的值,按照長方形合并
('SPAN',(0,0),(0,1)),
('SPAN',(1,0),(2,0)),
('SPAN',(3,0),(4,0)),
('SPAN',(5,0),(7,0)),
?#設(shè)置下面兩項(xiàng)
?('ALIGN', (0, 0), (-1, -1), 'CENTER'), ?# 左右居中對(duì)齊
('VALIGN', (-1, 0), (-2, 0), 'MIDDLE'), ?# 垂直居中對(duì)齊
1. 字符串字母處理
2. 字符串填充
str.ljust(width, fillchar)、str.center(width, fillchar)、str.rjust(width, fillchar)
返回一個(gè)指定的寬度 width 「居左」/「居中」/「居右」的字符串,如果 width 小于字符串寬度直接返回字符串,否則使用 fillchar 去填充。
3,字符串計(jì)數(shù)
str.count(sub, start, end)
#統(tǒng)計(jì)字符串里某個(gè)字符出現(xiàn)的次數(shù)??蛇x參數(shù)為在字符串搜索的開始與結(jié)束位置。
start, end遵循**“左閉右開”**原則。
4. 字符串位置
str.endswith(suffix, start, end)和str.startswith(substr, beg, end)
#判斷字符串是否以指定后綴結(jié)尾/開頭,如果以指定后綴「結(jié)尾」/「開頭」返回 True,否則返回 False。
5. 字符串查找
6. 字符串判斷
7. 字符串拼接
str.join() #將序列中的元素以指定的字符連接生成一個(gè)新的字符串。
s1 = "-" s2 = "" seq = ("r", "u", "n", "o", "o", "b")
# 字符串序列 print (s1.join( seq )) print (s2.join( seq )) r-u-n-o-o-b runoob
8. 統(tǒng)計(jì)字符串長度
str.len() #返回對(duì)象(字符、列表、元組等)長度或項(xiàng)目個(gè)數(shù)。
9. 去除字符兩側(cè)空格
str.lstrip()、str.rstrip()、str.strip() #截掉字符串「左邊」/「右邊」/「左右」兩側(cè)的空格或指定字符。
str0 = ' Hello World!' str0.lstrip() 'Hello World!' str1 = 'aaaa Hello World!' str1.lstrip('a') ' Hello World!'
10. str.maketrans(intab, outtab)和str.translate(table)
str.maketrans()創(chuàng)建字符映射的轉(zhuǎn)換表
str.maketrans()根據(jù)參數(shù)table給出的表轉(zhuǎn)換字符串的字符。
str.maketrans()傳入的也可以是字典
tab = {'e': '3', 'o': '4'} trantab = str.maketrans(tab) str0.translate(trantab) 'H3ll4 W4rld!'
11. 字符串替換
str.replace(old, new, max)
12. 字符分割
str.split(str, num)
13. 字符填充
str.zfill(width)
返回指定長度的字符串,原字符串右對(duì)齊,前面填充0。
1、vertical-align:middle的時(shí)候,是該元素的中心對(duì)齊周圍元素的中心。
2、這里“中心”的定義是:圖片當(dāng)然就是height的一半的位置,而文copy字應(yīng)該是基于baseline往上移動(dòng)0.5ex,亦即小寫字母“x”的正中心。但是很多瀏覽器zhidao往往把ex這個(gè)單位定義為0.5em,以至于其實(shí)不一定是x的正中心
app=my.Office.Word.GetInstance()
doc=app.Documents[0]
print?doc.Name
VBA工具集.doc
doc.Tables.Count
2
table=doc.Tables[1]
table.Cell(1,1).Select()
app.Selection.MoveEnd(Unit=12,?Count=4)
4
app.Selection.Cells.Shading.Texture?=?-10
1.my.Office.Word.GetInstance()用win32com得到Word的Application對(duì)象的實(shí)例
2.我所使用的樣本word文件中包含兩個(gè)Table第二個(gè)Table是想要修改的
3.table.Cell(1,1).Select()用于選中這個(gè)樣表的第一個(gè)單元格
4.app.Selection.MoveEnd用于獲得向右多選取4個(gè)單元格,wdCell=12,用于指示按單元格移動(dòng)
5.app.Selection.Cells.Shading.Texture = -10用于執(zhí)行陰影底紋的設(shè)置工作,wdTextureDiagonalUp=-10是一個(gè)代表斜向右上的底紋樣式的常數(shù)