python合並excel
❶ Python使用openpyxl庫修改和合並Excel文檔
先來看看openpyxl庫的官方說明:openpyxl is a Python library to read/write Excel 2010 xlsx/xlsm/xltx/xltm files.這個庫是針對2010 及以上Excel文檔的,筆者測試過2007是會報錯的。
Python使用openpyxl庫在實際的應用中可以提高效率。本文分享測試兩個案例。
1、修改統計文檔數據
讀取表中數據,計算平均分和總分,並且保存到最後兩列,最後再寫入到文件中。
2、多文檔合並手祥消
這個在實際的生活中可是大有用處畢知。試想一下現在有很多報名表,需要將報名表集中在一起,那麼只能一個個打開文檔復制粘貼,太低效率了。Python使用openpyxl庫就可以很快的完成將目錄下的.xlsx文件合並在一起。
get_all_xlsx_files函數的作用是找到目錄下的xlsx文件,並按照文件名進行排序;
merge_xlsx_files函數的作用是通過獲取表中數據,然後調用ws.append函數添加到匯總表的後面。
main主函數執行合並操作,並寫入匯總文宴埋件中。
合並效果如下:
❷ Python 拆分excel表內所有合並單元格
import openpyxl
from openpyxl.styles import PatternFill
workbook = openpyxl.load_workbook(r'C:\Users\Administrator\Desktop\user_info_format1.xlsx') # 載入已經存在的excel
name_list = workbook.sheetnames #獲取所有的sheet表名
worksheet = workbook[name_list[0]]
fill = PatternFill("solid", fgColor="FF0000") #設置填充樣式
m_list = worksheet.merged_cells # 合並單元格的位置信息,可迭代對象(單個是一個'openpyxl.worksheet.cell_range.CellRange'對象),print後就是excel坐標信息
cr = []
for m_area in m_list:
# 合並單元格的起始行坐標、終止行坐標。。。。,
r1, r2, c1, c2 = m_area.min_row, m_area.max_row, m_area.min_col, m_area.max_col
# 縱向合並單元格的位置信息提取出
if r2 - r1 > 0 or c2 - c1 > 0:
cr.append((r1, r2, c1, c2))
print('符合條件%s' % str(m_area))
#print(cr)
# 這里注意需要把合並單元格的信息提取出再拆分
for r in cr:
worksheet.unmerge_cells(start_row=r[0], end_row=r[1],
start_column=r[2], end_column=r[3])
if r[3]-r[2]==0: #單獨列合並
for row in (range(r[0], r[1]+1)):
worksheet.cell(row=row, column=r[3], value=worksheet.cell(r[0], r[2]).value)
worksheet.cell(row, column=r[3]).fill = fill #將對應拆分單元格填充顏色
elif r[1]-r[0]==0 : #單獨行合並
for column in (range(r[2], r[3]+1)):
worksheet.cell(row=r[1], column=column, value=worksheet.cell(r[0], r[2]).value)
worksheet.cell(row=r[0], column=column).fill = fill #將對應拆分單元格填充顏色
else : #多行、列合並
for row in (range(r[0], r[1]+1)):
for column in (range(r[2], r[3]+1)):
worksheet.cell(row, column, value=worksheet.cell(r[0], r[2]).value)
worksheet.cell(row, column).fill=fill #將對應拆分單元格填充顏色
workbook.save(r'C:\Users\Administrator\Desktop\data25.xlsx') #另存為新表