如何利用Python批量處理行、列和單元格詳解
精確調(diào)整工作表的行高和列寬
步驟
- 打開(kāi)工作簿。
- 遍歷所有工作表
核心代碼
for i in workbook.sheets:
value = i.range('A1').expand('table')
value.column_width = 12
value.row_height = 20
workbook.save()
批量更改多個(gè)工作簿的數(shù)據(jù)格式
步驟:
- 列出文件夾中所有子文件
- 遍歷打開(kāi)子文件
- 遍歷工作表
- 獲取工作表的最后一行
- 將指定列從上到下修改
核心代碼
#遍歷工作表
for j in workbook.sheets:
# 獲取最后一行
row_num = j['A1'].current_region.last_cell.row
# 數(shù)據(jù)格式修改
j['A2:A{}'.format(row_num)].number_format = 'm/d'
j['D2:D{}'.format(row_num)].number_format = '¥#,##0.00'
workbook.save()
workbook.close()
使用xwings模塊中的number format屬性來(lái)設(shè)置單元格區(qū)域中數(shù)據(jù)的格式。該屬性的取值為一個(gè)代表特定格式的字符串,與Excel的“設(shè)置單元格格式”
對(duì)話(huà)框中“數(shù)字”選項(xiàng)卡下設(shè)置的格式對(duì)應(yīng)。
批量更改工作簿的外觀(guān)格式
難點(diǎn)應(yīng)該是外觀(guān)格式如何更改了吧,這里介紹一些常用的外觀(guān)格式。
j 是工作表
設(shè)置字體格式
修改字體為宋體
j['A1:H1'].api.Font.Name = '宋體'
修改字號(hào)
j['A1:H1'].api.Font.Size= 10 # 10磅
字體加粗
j['A1:H1'].api.Font.Bold= True
字體顏色
# 白色 j['A1:H1'].api.Font.Color= xw.utils.rgb_to_int((255,255,255))
單元格填充顏色
# 填充顏色為黑色 j['A1:H1'].Color= xw.utils.rgb_to_int((0,0,0))
對(duì)齊方式
# 水平對(duì)齊方式為 居中 j['A1:H1'].api.HorizontalAlignment = xw.constants.HAlign.xlHAlignCenter # 垂直對(duì)齊方式為 居中 j['A1:H1'].api.VerticalAlignment= xw.constants.VAlign.xlVAlignCenter
以上是一列的如果是正文,j['A1:H1']變成 j['A2'].expand('table') 就可以了
添加合適粗細(xì)的邊框
# 遍歷所有的單元格
for cell in j['A1'].expand('table'):
for b in range(7,12):
# 設(shè)置單元格的邊框線(xiàn)型
cell.api.Borders(b).LineStyle = 1
# 設(shè)置單元格的邊框粗細(xì)
cell.api.Borders(b).Weight = 2
替換工作簿的行數(shù)據(jù)
核心代碼
# 遍歷工作表
for j in eorkbook.sheets:
# 獲取工作表數(shù)據(jù)
value = j['A2'].expand('table').value
#按行遍歷工作表數(shù)據(jù)
for index,val in enumerate(value):
# 判斷行數(shù)據(jù)是否是這個(gè)
if val == ['背包',16,65]:
# 是的話(huà)替換為新數(shù)據(jù)
value[index] = ['雙肩包',36,79]
#將完成替換的數(shù)據(jù)寫(xiě)入工作表中
j['A2'].expand('table').value = value
workbook.save()
enumerate()是Python的內(nèi)置函數(shù),用于將一個(gè)可遍歷的數(shù)據(jù)對(duì)象(如列表、元組或字符串等)組合為一個(gè)索引序列,可同時(shí)得到數(shù)據(jù)對(duì)象的索引及對(duì)應(yīng)的值,一般用在for語(yǔ)句當(dāng)中。該函數(shù)的語(yǔ)法格式和常用參數(shù)含義如下。
enumerate(sequenxe,[start=0]) # start 是索引的起始位置
如果是修改指定行什么辦呢?因?yàn)榱惺窃谛械牡趲讉€(gè)單元格中我們可以按如下代碼進(jìn)行修改
#按行遍歷工作表數(shù)據(jù) for index,val in enumerate(value): # 修改第三個(gè)單元格,即第index行,第 3列,下標(biāo)是從0開(kāi)始的 val[2] = val[2] + 1 # 替換整行數(shù)據(jù) value[index] = val
提取指定數(shù)據(jù)
import xlwings as xw
import pandas as pd
app = xw.App(visible = False, add_book = False)
workbook = app.books.open('采購(gòu)表.xlsx')
worksheet = workbook.sheets
data = []
for i in worksheet:
values = i.range('A1').expand().options(pd.DataFrame).value
# 一次性提取工作表中所有符合條件的行數(shù)據(jù)
filtered = values[values['采購(gòu)物品'] == '復(fù)印紙']
if not filtered.empty:
data.append(filtered)
new_workbook = xw.books.add()
new_worksheet = new_workbook.sheets.add('復(fù)印紙')
new_worksheet.range('A1').value = pd.concat(data, ignore_index = False)
new_workbook.save('復(fù)印紙.xlsx')
workbook.close()
app.quit()
提取列數(shù)據(jù)
import xlwings as xw
import pandas as pd
app = xw.App(visible = False, add_book = False)
workbook = app.books.open('采購(gòu)表.xlsx')
worksheet = workbook.sheets
column = ['采購(gòu)日期', '采購(gòu)金額']
data = []
for i in worksheet:
values = i.range('A1').expand().options(pd.DataFrame, index = False).value
filtered = values[column]
data.append(filtered)
new_workbook = xw.books.add()
new_worksheet = new_workbook.sheets.add('提取數(shù)據(jù)')
new_worksheet.range('A1').value = pd.concat(data, ignore_index = False).set_index(column[0])
new_workbook.save('提取表.xlsx')
workbook.close()
app.quit()
追加行數(shù)據(jù)
import os
import xlwings as xw
newContent = [['雙肩包', '64', '110'], ['腰包', '23', '58']]
app = xw.apps.add()
file_path = '分部信息'
file_list = os.listdir(file_path)
for i in file_list:
if os.path.splitext(i)[1] == '.xlsx':
workbook = app.books.open(file_path + '\\' + i)
worksheet = workbook.sheets['產(chǎn)品分類(lèi)表']
values = worksheet.range('A1').expand()
number = values.shape[0]
worksheet.range(number + 1, 1).value = newContent
workbook.save()
workbook.close()
app.quit()
提取所有工作表的唯一值
import xlwings as xw
app = xw.App(visible = True, add_book = False)
workbook = app.books.open('上半年銷(xiāo)售統(tǒng)計(jì)表.xlsx')
data = []
for i, worksheet in enumerate(workbook.sheets):
values = worksheet['A2'].expand('down').value
data = data + values
data = list(set(data))
data.insert(0, '書(shū)名')
new_workbook = xw.books.add()
new_worksheet = new_workbook.sheets.add('書(shū)名')
new_worksheet['A1'].options(transpose = True).value = data
new_worksheet.autofit()
new_workbook.save('書(shū)名.xlsx')
workbook.close()
app.quit()
總結(jié)
到此這篇關(guān)于如何利用Python批量處理行、列和單元格的文章就介紹到這了,更多相關(guān)Python批量處理行、列和單元格內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python基礎(chǔ)之元編程知識(shí)總結(jié)
- Python中用Decorator來(lái)簡(jiǎn)化元編程的教程
- Python中使用裝飾器和元編程實(shí)現(xiàn)結(jié)構(gòu)體類(lèi)實(shí)例
- 簡(jiǎn)析Python函數(shù)式編程字符串和元組及函數(shù)分類(lèi)與高階函數(shù)
- python使用xpath獲取頁(yè)面元素的使用
- Python元類(lèi)與迭代器生成器案例詳解
- Python BeautifulSoup基本用法詳解(通過(guò)標(biāo)簽及class定位元素)
- python中使用 unittest.TestCase單元測(cè)試的用例詳解
- Python接口自動(dòng)化淺析unittest單元測(cè)試原理
- python自動(dòng)化八大定位元素講解
- python一繪制元二次方程曲線(xiàn)的實(shí)例分析
- 詳解Python自動(dòng)化中這八大元素定位
- python元組打包和解包過(guò)程詳解
- 淺談Python的元編程
相關(guān)文章
Python Django給admin添加Action的方法實(shí)例詳解
這篇文章主要介紹了Django給admin添加Action的方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-04-04
Python turtle實(shí)現(xiàn)貪吃蛇游戲
這篇文章主要為大家詳細(xì)介紹了Python turtle實(shí)現(xiàn)貪吃蛇游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06
python 使用OpenCV進(jìn)行簡(jiǎn)單的人像分割與合成
這篇文章主要介紹了python 使用OpenCV進(jìn)行簡(jiǎn)單的人像分割與合成的方法,幫助大家更好的利用python處理圖像,感興趣的朋友可以了解下2021-02-02
基于Python和PyYAML讀取yaml配置文件數(shù)據(jù)
這篇文章主要介紹了基于Python和PyYAML讀取yaml配置文件數(shù)據(jù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01
python之plt.hist函數(shù)的輸入?yún)?shù)和返回值的用法解釋
這篇文章主要介紹了python之plt.hist函數(shù)的輸入?yún)?shù)和返回值的用法解釋,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10
Python寫(xiě)的一個(gè)簡(jiǎn)單監(jiān)控系統(tǒng)
這篇文章主要介紹了Python寫(xiě)的一個(gè)簡(jiǎn)單監(jiān)控系統(tǒng),本文講解了詳細(xì)的編碼步驟,并給給出相應(yīng)的實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-06-06
Python編程django實(shí)現(xiàn)同一個(gè)ip十分鐘內(nèi)只能注冊(cè)一次
這篇文章主要介紹了Python編程django實(shí)現(xiàn)同一個(gè)ip十分鐘內(nèi)只能注冊(cè)一次的相關(guān)內(nèi)容,具有一定參考價(jià)值。需要的朋友可以了解下。2017-11-11
Python中用于轉(zhuǎn)換字母為小寫(xiě)的lower()方法使用簡(jiǎn)介
這篇文章主要介紹了Python中用于轉(zhuǎn)換字母為小寫(xiě)的lower()方法使用,是Python學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-05-05

