使用Python批量处理行、列和单元格
生活随笔
收集整理的這篇文章主要介紹了
使用Python批量处理行、列和单元格
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
使用Python批量處理行、列和單元格
- 精確調整工作表的行高和列寬
- 批量更改多個工作簿的數據格式
- 批量更改工作簿的外觀格式
- 設置字體格式
- 修改字體為宋體
- 修改字號
- 字體加粗
- 字體顏色
- 單元格填充顏色
- 對齊方式
- 添加合適粗細的邊框
- 替換工作簿的行數據
- 提取指定數據
- 提取列數據
- 追加行數據
- 提取所有工作表的唯一值
精確調整工作表的行高和列寬
步驟
核心代碼
for i in workbook.sheets:value = i.range('A1').expand('table')value.column_width = 12value.row_height = 20 workbook.save()批量更改多個工作簿的數據格式
步驟:
核心代碼
使用xwings模塊中的number format屬性來設置單元格區域中數據的格式。該屬性的取值為一個代表特定格式的字符串,與Excel的“設置單元格格式”
對話框中“數字”選項卡下設置的格式對應。
批量更改工作簿的外觀格式
難點應該是外觀格式如何更改了吧,這里介紹一些常用的外觀格式。
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):# 設置單元格的邊框線型cell.api.Borders(b).LineStyle = 1# 設置單元格的邊框粗細cell.api.Borders(b).Weight = 2替換工作簿的行數據
核心代碼
# 遍歷工作表 for j in eorkbook.sheets:# 獲取工作表數據value = j['A2'].expand('table').value#按行遍歷工作表數據for index,val in enumerate(value):# 判斷行數據是否是這個if val == ['背包',16,65]:# 是的話替換為新數據value[index] = ['雙肩包',36,79]#將完成替換的數據寫入工作表中j['A2'].expand('table').value = value workbook.save()enumerate()是Python的內置函數,用于將一個可遍歷的數據對象(如列表、元組或字符串等)組合為一個索引序列,可同時得到數據對象的索引及對應的值,一般用在for語句當中。該函數的語法格式和常用參數含義如下。
enumerate(sequenxe,[start=0]) # start 是索引的起始位置 如果是修改指定行什么辦呢?因為列是在行的第幾個單元格中我們可以按如下代碼進行修改 #按行遍歷工作表數據 for index,val in enumerate(value):# 修改第三個單元格,即第index行,第 3列,下標是從0開始的val[2] = val[2] + 1# 替換整行數據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# 一次性提取工作表中所有符合條件的行數據filtered = values[values['采購物品'] == '復印紙'] if not filtered.empty: data.append(filtered) new_workbook = xw.books.add() new_worksheet = new_workbook.sheets.add('復印紙') new_worksheet.range('A1').value = pd.concat(data, ignore_index = False) new_workbook.save('復印紙.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).valuefiltered = values[column] data.append(filtered) new_workbook = xw.books.add() new_worksheet = new_workbook.sheets.add('提取數據') 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['產品分類表']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('上半年銷售統計表.xlsx') data = [] for i, worksheet in enumerate(workbook.sheets):values = worksheet['A2'].expand('down').valuedata = 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()總結
以上是生活随笔為你收集整理的使用Python批量处理行、列和单元格的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用Python批量处理工作簿和工作表
- 下一篇: c语言建立栈(顺序栈、双栈和链式栈)