Ensina quatro maneiras de usar o lote Python para mesclar vários planilhas do Excel e várias planilhas

I. Introdução

Olá a todos, este é o programa Yuanyouyou. Compartilhei um artigo de automação Python com você há dois dias: ensinei como usar Python para dividir facilmente o Excel em vários arquivos CSV e, em seguida, um leitor encontrou um problema no grupo de intercâmbio avançado do Python. Ele tem muitas tabelas do Excel e precisa do Combine esses arquivos do Excel.

imagem

Se você encontrar dificuldades em aprender e quiser encontrar um ambiente de aprendizagem e comunicação em Python, você pode se juntar ao nosso grupo QQ: 721195303, siga o editor, isso vai economizar muito tempo e reduzir muitos problemas encontrados.

Claro, é possível abrir a cópia e colar um por um, mas esse método é demorado, trabalhoso e sujeito a erros. Vários arquivos também podem ser processados ​​manualmente. Se houver dezenas ou mesmo centenas deles, você ficará cego. No entanto, esse problema é para Python. tão fácil, vamos dar uma olhada!

 

2. Metas do projeto

Use Python para realizar o processamento de mesclagem de vários Excel e várias planilhas.

 

3. Preparação do projeto

Software: PyCharm

Bibliotecas necessárias: pandas, xlrd, os

 

Quatro, análise do projeto

1) Como escolher o arquivo Excel a ser mesclado?

Use os para obter todos os arquivos do Excel a serem mesclados.

2) Como selecionar as planilhas a serem mescladas?

Use a biblioteca xlrd para ler no Excel e obter o nome da planilha a ser mesclado.

3) Como fazer a fusão?

Usando a biblioteca do pandas, abra todos os nomes das planilhas um por um em um loop e use concat () para anexar e mesclar dados.

4) Como salvar o arquivo?

Use to_excel para salvar os dados e obter o arquivo de destino final mesclado.

 

Cinco, realização do projeto

1. A primeira etapa é importar as bibliotecas necessárias

import pandas as pd
import xlrd
import os

2. Selecione o arquivo Excel a ser mesclado na segunda etapa

 #要合并文件路径
    path="D:/b/"
    #获取文件夹下所有EXCEL名
    xlsx_names = [x for x in os.listdir(path) if x.endswith(".xlsx")]

3. A terceira etapa é selecionar a planilha a ser mesclada

   # 获取第一个EXCEL名
    xlsx_names1 = xlsx_names[0]

    aa = path + xlsx_names1
    #打开第一个EXCEL
    first_file_fh=xlrd.open_workbook(aa)
    # 获取SHEET名
    first_file_sheet=first_file_fh.sheets()

4. A quarta etapa é combinar o conteúdo da planilha em um loop

   #按SHEET名循环
    for sheet_name in sheet_names:
        df = None
        # 按EXCEL名循环
        for xlsx_name in xlsx_names:
            sheet_na = pd.ExcelFile(path + xlsx_name).sheet_names
            if sheet_name in sheet_na:
                #print(sheet_name)
                _df = pd.read_excel(path + xlsx_name, sheet_name=sheet_name,header=None)
                if df is None:
                    df = _df
                else:
                    df = pd.concat([df, _df], ignore_index=True)
            else:continue

5. A quinta etapa é salvar o arquivo mesclado

 
 
      df.to_excel(excel_writer=writer, sheet_name=sheet_name, encoding="utf-8", index=False)
        print(sheet_name + "  保存成功!共%d个,第%d个。" % (len(sheet_names),num))
        num += 1
    writer.save()
    writer.close()

 

Seis, exibição de efeito

1. Dados do Excel antes do processamento:

imagem

2. Prompt de progresso da operação:

3. O resultado após a fusão:

 

Sete, resumo

Este artigo apresenta como usar Python para mesclar vários arquivos do Excel e várias planilhas, o que reduz muito o problema de copiar e colar, economiza tempo e esforço, não é fácil cometer erros, não tem muito código e a adição de loop é um pouco estranho. Pense nisso e você entenderá. Se não entender, deixe uma mensagem e faça perguntas a qualquer momento, vamos aprender e progredir juntos.

Amigos que têm ideias também podem empacotar o código no artigo para fazer um pequeno software executável exe, empacotá-lo e enviá-lo para outros usarem ou ganhar uma dica. O tutorial sobre empacotamento não será repetido aqui, bem-vindo: Três Você deve se lembrar dos comandos de empacotamento do Pyinstaller - use Python para obter o exe de empacotamento .

 

Oito, ovos de páscoa

Os dois códigos a seguir são fornecidos por amigos no grupo, e o editor também os testou. O pró-teste é eficaz e todos estão convidados a experimentá-lo ativamente!

Código do amigo do grupo Jayson:

# -*- coding: utf-8 -*-
# @Author: hebe
# @Date:   2020-04-18 18:31:03
# @Last Modified by:   hebe
# @Last Modified time: 2020-04-18 19:40:48
import os 
import glob
import openpyxl

def merge_xlsx_files(xlsx_files):
    wb = openpyxl.load_workbook(xlsx_files[0])
    ws = wb.active
    ws.title = "merged result"

    for  filename in xlsx_files[1:]:
        workbook = openpyxl.load_workbook(filename)
        sheet = workbook.active
        for row in sheet.iter_rows(min_row=1):
            values = [cell.value for cell in row]
            ws.append(values)
    return wb

#path is very important here , must true.
def get_all_xlsx_files(path):
    xlsx_files = glob.glob(os.path.join(r'C:\\Users\\pdcfi\\Desktop\\', '*.xlsx'))
    sorted(xlsx_files, key=str.lower)
    return xlsx_files

def main():
    xlsx_files = get_all_xlsx_files(os.path.expanduser('~lmx'))
    wb = merge_xlsx_files(xlsx_files)
    wb.save('merged_form.xlsx')

if __name__ == '__main__':
    main()
    
print("all excel append OK!")

Código do meu amigo Liu Zaoqi:

# -*- coding: utf-8 -*-
from openpyxl import load_workbook, Workbook
import glob

path = "C:\\Users\\pdcfi\\Desktop\\excel\\"
new_workbook = Workbook()
new_sheet = new_workbook.active

# 用flag变量明确新表是否已经添加了表头,只要添加过一次就无须重复再添加
flag = 0

for file in glob.glob(path + '/*.xlsx'):
    workbook = load_workbook(file)
    sheet = workbook.active

    coloum_A = sheet['A']
    row_lst = []
    for cell in coloum_A:
        if cell:
            print(cell.row)
            row_lst.append(cell.row)

    if not flag:
        header = sheet[1]
        header_lst = []
        for cell in header:
            header_lst.append(cell.value)
        new_sheet.append(header_lst)
        flag = 1

    for row in row_lst:
        data_lst = []
        for cell in sheet[row]:
            data_lst.append(cell.value)
        new_sheet.append(data_lst)

new_workbook.save(path + '/' + '符合筛选条件的新表.xlsx')

Código do engenheiro Qunyou:

import tkinter as tk
from tkinter import filedialog
import os
import pandas as pd
import glob

root = tk.Tk()
root.withdraw()

# 选择文件夹位置
filelocation = os.path.normpath(filedialog.askdirectory(initialdir=os.getcwd()))
lst = []

# 读取文件夹下所有文件(xls和xlsx都读取)
for i in glob.glob(filelocation + "\\\\" + "*.*"):
    if os.path.splitext(i)[1] in [".xls", ".xlsx"]:
        lst.append(pd.read_excel(i))

# 保存合并后的excel文件
writer = pd.ExcelWriter(filedialog.asksaveasfilename(title="保存", initialdir=filelocation, defaultextension="xlsx",
                                                     filetypes=[("Excel 工作簿", "*.xlsx"),
                                                                ("Excel 97-2003 工作簿", "*.xls")]))
pd.concat(lst).to_excel(writer, 'all', index=False)
writer.save()

print('\n%d个文件已经合并成功!' % len(lst))

Finalmente, os pequenos parceiros que precisam do código do projeto deste artigo

 

Claro, a realização das funções deste artigo não se limita aos três métodos mencionados acima. Também pode ser feita usando pandas. Se você tiver outros métodos, seja bem-vindo para fazer amigos para aprender e se comunicar.

Ainda quero recomendar o grupo de aprendizagem Python que construí sozinho : 721195303. Todos os alunos do grupo estão aprendendo Python. Se você quiser aprender ou estiver aprendendo Python, é bem-vindo. Todos participam do desenvolvimento de software e compartilham bens de tempos em tempos (apenas relacionado ao desenvolvimento de software Python), incluindo uma cópia dos mais recentes materiais avançados de Python e ensino baseado em zero compilado por mim em 2021. Bem-vindos amigos que estão em nível avançado e interessados ​​em Python!

Acho que você gosta

Origin blog.csdn.net/aaahtml/article/details/114160986
Recomendado
Clasificación