您好,登錄后才能下訂單哦!
這篇文章主要介紹了怎么利用Python批量處理行、列和單元格,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
步驟
打開工作簿。
遍歷所有工作表
核心代碼
for i in workbook.sheets: value = i.range('A1').expand('table') value.column_width = 12 value.row_height = 20 workbook.save()
步驟:
列出文件夾中所有子文件
遍歷打開子文件
遍歷工作表
獲取工作表的最后一行
將指定列從上到下修改
核心代碼
#遍歷工作表 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屬性來設(shè)置單元格區(qū)域中數(shù)據(jù)的格式。該屬性的取值為一個代表特定格式的字符串,與Excel的“設(shè)置單元格格式”
對話框中“數(shù)字”選項卡下設(shè)置的格式對應(yīng)。
難點應(yīng)該是外觀格式如何更改了吧,這里介紹一些常用的外觀格式。
j 是工作表
j['A1:H1'].api.Font.Name = '宋體'
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))
# 水平對齊方式為 居中 j['A1:H1'].api.HorizontalAlignment = xw.constants.HAlign.xlHAlignCenter # 垂直對齊方式為 居中 j['A1:H1'].api.VerticalAlignment= xw.constants.VAlign.xlVAlignCenter
以上是一列的如果是正文,j['A1:H1']變成 j['A2'].expand('table') 就可以了
# 遍歷所有的單元格 for cell in j['A1'].expand('table'): for b in range(7,12): # 設(shè)置單元格的邊框線型 cell.api.Borders(b).LineStyle = 1 # 設(shè)置單元格的邊框粗細(xì) cell.api.Borders(b).Weight = 2
核心代碼
# 遍歷工作表 for j in eorkbook.sheets: # 獲取工作表數(shù)據(jù) value = j['A2'].expand('table').value #按行遍歷工作表數(shù)據(jù) for index,val in enumerate(value): # 判斷行數(shù)據(jù)是否是這個 if val == ['背包',16,65]: # 是的話替換為新數(shù)據(jù) value[index] = ['雙肩包',36,79] #將完成替換的數(shù)據(jù)寫入工作表中 j['A2'].expand('table').value = value workbook.save()
enumerate()是Python的內(nèi)置函數(shù),用于將一個可遍歷的數(shù)據(jù)對象(如列表、元組或字符串等)組合為一個索引序列,可同時得到數(shù)據(jù)對象的索引及對應(yīng)的值,一般用在for語句當(dāng)中。該函數(shù)的語法格式和常用參數(shù)含義如下。
enumerate(sequenxe,[start=0]) # start 是索引的起始位置
如果是修改指定行什么辦呢?因為列是在行的第幾個單元格中我們可以按如下代碼進行修改
#按行遍歷工作表數(shù)據(jù) for index,val in enumerate(value): # 修改第三個單元格,即第index行,第 3列,下標(biāo)是從0開始的 val[2] = val[2] + 1 # 替換整行數(shù)據(jù) value[index] = val
import xlwings as xw import pandas as pd app = xw.App(visible = False, add_book = False) workbook = app.books.open('采購表.xlsx') worksheet = workbook.sheets data = [] for i in worksheet: values = i.range('A1').expand().options(pd.DataFrame).value # 一次性提取工作表中所有符合條件的行數(shù)據(jù) filtered = values[values['采購物品'] == '復(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()
import xlwings as xw import pandas as pd app = xw.App(visible = False, add_book = False) workbook = app.books.open('采購表.xlsx') worksheet = workbook.sheets column = ['采購日期', '采購金額'] 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()
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)品分類表'] 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('上半年銷售統(tǒng)計表.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, '書名') new_workbook = xw.books.add() new_worksheet = new_workbook.sheets.add('書名') new_worksheet['A1'].options(transpose = True).value = data new_worksheet.autofit() new_workbook.save('書名.xlsx') workbook.close() app.quit()
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“怎么利用Python批量處理行、列和單元格”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。