當前位置:首頁 » 編程語言 » python合並excel

python合並excel

發布時間: 2023-05-12 03:02:01

❶ 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') #另存為新表

熱點內容
生信差異分析的腳本 發布:2025-07-18 10:14:50 瀏覽:596
微信打開網頁繼續訪問 發布:2025-07-18 10:09:50 瀏覽:47
蔬菜解壓游戲大全 發布:2025-07-18 10:00:12 瀏覽:71
linuxand 發布:2025-07-18 09:48:27 瀏覽:725
為什麼安卓的app下載不了 發布:2025-07-18 09:47:45 瀏覽:178
如何用伺服器搭建網路 發布:2025-07-18 09:36:05 瀏覽:451
迷你世界電腦版怎麼改密碼 發布:2025-07-18 09:26:41 瀏覽:51
php創建目錄 發布:2025-07-18 09:26:17 瀏覽:659
為什麼手機游戲分ios和安卓端 發布:2025-07-18 09:22:17 瀏覽:140
android數據顯示 發布:2025-07-18 09:17:27 瀏覽:528