python 合并多个excel文件

使用 openpyxl

思路:

  • 读取n个excel的文件,存储在一个二维数组中,注意需要转置。
  • 将二维数组的数据写入excel。

安装软件:

shell 复制代码
pip install openpyxl

源代码:

python 复制代码
import os
import openpyxl
# 将n个excel文件数据合并到一个excel


# 读取n个excel文件数据,并且合并到一个二维数组,每个excel只读取A列,且行数保持一样
def merge(n):
    data = []
    for i in range(n):
        data_file_path = os.path.join('data', f'data{i + 1}.xlsx')
        # 返回一个workbook数据类型的值
        workbook = openpyxl.load_workbook(data_file_path)
        sheet = workbook.active
        # 取A列数据
        cell = sheet['A']
        column = []
        for j in cell:
            column.append(j.value)
        data.append(column)

    # print(data)
    # 转置
    transpose_data = list(map(list, zip(*data)))
    # print(transpose_data)
    merge_file_path = os.path.join('data', 'merge.xlsx')
    save(transpose_data, merge_file_path)


# 将二维数据数据保存到excel文件
def save(data, file_path):
    workbook = openpyxl.Workbook()
    sheet = workbook.active
    sheet.title = 'Sheet1'
    workbook.save(file_path)

    for row in data:
        sheet.append(row)
    workbook.save(file_path)


if __name__ == '__main__':
    merge(10)

效果截图:

使用 pandas

思路:

  • 读取n个excel的文件,存储在一个二维数组中,注意需要转置。
  • 将二维数组的数据写入excel。

安装软件:

shell 复制代码
pip install pandas

源代码:

python 复制代码
#!/usr/bin/python3
# -*- coding: utf-8 -*-

import pandas as pd
import os

# 将n个excel文件数据合并到一个excel


# 读取n个excel文件数据,并且合并到一个二维数组,每个excel只读取A列,且行数保持一样
def merge(n):
    data = []
    for i in range(n):
        data_file_path = os.path.join('data', f'data{i + 1}.xlsx')
        df = pd.read_excel(data_file_path, index_col=None, header=None, sheet_name='Sheet1')
        # 仅获取第0列数据
        data.append(df.values[:, 0])

    # print(data)
    # 转置
    transpose_data = list(map(list, zip(*data)))
    # print(transpose_data)
    merge_file_path = os.path.join('data', 'merge.xlsx')
    save(transpose_data, merge_file_path)


# 将二维数据数据保存到excel文件
def save(data, file_path):
    df = pd.DataFrame(data)
    # 写入本地excel文件
    df.to_excel(file_path, sheet_name="Sheet1", index=False, header=False)


# main函数
if __name__ == '__main__':
    merge(10)

参考

源代码位置:

相关推荐
nimadan124 小时前
**AI漫剧软件2025推荐,解锁高性价比创意制作新体验**
人工智能·python
姜太公钓鲸2336 小时前
ROM就是程序存储器,实际的存储介质是Flash闪存。上述描述中的程序存储器是什么意思?
开发语言·javascript·ecmascript
Java后端的Ai之路6 小时前
【JDK】-JDK 21 新特性内容
java·开发语言·后端·jdk·jdk21
wjs20246 小时前
JavaScript 作用域
开发语言
yunhuibin6 小时前
GoogLeNet学习
人工智能·python·深度学习·神经网络·学习
m0_531237177 小时前
C语言-指针终阶
c语言·开发语言
散峰而望7 小时前
C++ 启程:从历史到实战,揭开命名空间的神秘面纱
c语言·开发语言·数据结构·c++·算法·github·visual studio
易辰君7 小时前
【Python爬虫实战】正则:中文匹配与贪婪非贪婪模式详解
开发语言·爬虫·python
普通网友7 小时前
PHP语言的正则表达式
开发语言·后端·golang
黎雁·泠崖7 小时前
Java常用类核心详解(七):正则表达式 Regex 从入门到实战
java·开发语言·正则表达式