python实现Excel工作簿和表单合并

本文介绍了一种批量处理Excel文件的方法,包括获取指定路径下所有.xlsx文件,并读取每个文件的所有工作表,选择特定列后转换为CSV格式保存。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Created on Mon Mar 16 11:23:05 2015

@author: admin
"""
# 分批次运行,先得到books, 再运行,利用print 来debug

import pandas as pd
import numpy as np 
import matplotlib as pl
import os
count=0
#ori_path='xx'
ori_path='C:\Python27\data\sample'
def get_xls_books(ori_path): # get target filename and dir of a path 
    temp = list(os.walk(ori_path)) #tmp is list ,tmp[0]该目录文件路径和文件名, tmp[1]:子目录文件路径,文件名称 
    book_path=[]
    book_name=[]
    root=temp[0][0]
    for i in temp[0][2]:
      if os.path.splitext(i)[1] == '.xlsx': #splite filename 
          obj_path=os.path.join(root,i)
          book_path.append(obj_path)
          book_name.append(os.path.splitext(i)[0])
    return zip(book_path, book_name)

def get_xls_sheets(obj_path): #get all sheets of a object path
    xls=pd.ExcelFile(obj_path)  
    sheet_names=xls.sheet_names
    sheets=[xls.parse(i)  for i in range(0,len(sheet_names)) ]   # use parse can get dataframe saved into a list 
    return zip(sheet_names,sheets)

books=get_xls_books(ori_path)  # book paths list
#xls=pd.ExcelFile(books[0])
#print xls.parse(0).columns

for book in books:  # this loop get a book 
    bookname=book[1]
    bookpath=book[0]
    sheets=get_xls_sheets(bookpath)  # get all sheets and names from book path 
    for i in range(len(sheets)):  #operate each sheet, is range(len) not len 
        sheetname=sheets[i][0]
        name=bookname+'-'+sheetname+'.'+'csv' 
        pd_sheet=sheets[i][1] # dataFrame
        cols=pd_sheet.columns
        pdf=pd_sheet[[cols[17],cols[18],cols[4],cols[6],cols[8],cols[10],cols[19],cols[16]]]  # use emunerate function     
        pdf.columns=['area','patch','wangdian','operator','custid','servid','servtype','is_identify'] # rename 
        pdf1=pdf[pdf['is_identify']=='是']   #filter
        pdf2=pdf1.drop('is_identify',1)     
        pdf2.to_csv(os.path.join(ori_path,name), header=None, index=None)
### 使用Python Pandas库合并多个Excel文件 #### 准备工作 为了能够顺利地使用Pandas库处理合并Excel文件,首先需要确保环境中已经安装了必要的依赖包。可以通过pip工具轻松完成这些库的安装。 ```bash pip install pandas openpyxl glob ``` 上述命令会安装`pandas`以及用于读写Excel文件所需的`openpyxl`引擎,还有帮助定位本地磁盘上特定模式文件路径列表的`glob`模块[^2]。 #### 合并逻辑实现 当涉及到批量操作多份Excel文档时,可以利用循环结构遍历目标目录下的所有`.xlsx`文件,并逐一加载至DataFrame对象中再执行连接动作。下面给出了一段完整的示范程序: ```python import os import pandas as pd from glob import iglob def merge_excel_files(directory, output_file): all_data = [] # 遍历指定目录下所有的 .xlsx 文件 for file in iglob(os.path.join(directory, "*.xlsx")): df = pd.read_excel(file) # 加载单个工作簿中的第一个表单 all_data.append(df) combined_df = pd.concat(all_data, ignore_index=True) # 将所有数据框垂直堆叠在一起 # 输出合并后的结果到新的Excel文件里 with pd.ExcelWriter(output_file, engine='openpyxl') as writer: combined_df.to_excel(writer, index=False) if __name__ == '__main__': input_dir = './excels/' # 输入文件夹位置 out_path = 'combined_output.xlsx' # 输出文件名 merge_excel_files(input_dir, out_path) ``` 这段脚本定义了一个名为`merge_excel_files()`的功能函数,接受两个参数:一个是待处理的工作簿所在的文件夹路径;另一个是要保存最终输出的位置。它内部实现了对给定路径内所有符合条件(即扩展名为`.xlsx`)的电子表格进行迭代解析的过程,并把它们的内容追加到一个临时列表变量当中去。最后一步则是调用`pd.concat()`方法将这个序列里的各个成员横向拼接起来形成一个新的大型表格实例,随后借助于`to_excel()`接口导出为实体文件[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值