python自动合并excel_python-Excel自动化

本文介绍了使用Python进行Excel自动化处理的基础和进阶操作,包括创建Excel、读取数据、复制Excel文件、数据格式化、Vlookup函数实现以及如何拆分和批量合并Excel文件。主要涉及的第三方库有xlrd、xlutils、pandas等。
摘要由CSDN通过智能技术生成

基础操作

1.创建Excel

创建Excel步骤

0a382e09ed0f

image.png

code

#!/usr/bin/env python

# _*_ coding: utf-8 _*_

# @Time : 2021/2/13 16:53

# @Author : pl

# @Version:V 0.1

# @File : Excel自动化基础操作.py

# @desc :

import xlwt

# xlwt.Workbook() 先实例化一个操作excel的对象

wb = xlwt.Workbook()

# 添加sheet

sh1 = wb.add_sheet('成绩')

# 写入操作 write(行,列,数据)

sh1.write(0, 0, '姓名')

sh1.write(0, 1, '成绩')

sh1.write(1, 0, '张三')

sh1.write(1, 1, 88)

sh1.write(2, 0, '李四')

sh1.write(2, 1, 99)

#保存

wb.save('D:\\Study\\python\\B站\\自动化excel\\testData\\file\\test.xls')

2.读取Excel数据

第三方模块

xlrd

code

import xlrd

"""

读取excel文件

"""

wb1 = xlrd.open_workbook('D:\\Study\\python\\B站\\自动化excel\\testData\\file\\test.xls')

print(wb1.nsheets)

print(wb1.sheet_names())

#读取每个sheet中每行的数据

for sh in wb1.sheets():

for r in range(sh.nrows):

print(sh.row(r))

输出

0a382e09ed0f

image.png

3.copy Excel

第三方模块

xlutils

code

#只引入copy函数即可不用所有函数都引入

from xlutils.copy import copy

"""

复制

"""

readData = xlrd.open_workbook('D:\\Study\\python\\B站\\自动化excel\\testData\\file\\test.xls')

wb2 = copy(readData)

sh1 = wb2.get_sheet(0)

sh1.write(3, 0, '王二')

sh1.write(3, 1, 99)

wb2.save('D:\\Study\\python\\B站\\自动化excel\\testData\\file\\test2.xls')

0a382e09ed0f

image.png

4.数据格式化

第三方模块及函数

xlwt.easyxf()

code

"""

格式化

"""

# font表示字体 字体加粗 bold on

styleBR = xlwt.easyxf('font:name Times New Roman, color-index red,bold on')

styleDate = xlwt.easyxf(num_format_str='YYYY-MM-DD')

wb = xlwt.Workbook()

sh1 = wb.add_sheet('成绩')

sh1.write(0, 0, '姓名', styleBR)

sh1.write(0, 1, '日期', styleBR)

sh1.write(0, 2, '成绩', styleBR)

sh1.write(1, 0, '张三')

sh1.write(1, 1, '2021-02-13', styleDate)

sh1.write(1, 2, 99)

sh1.write(2, 0, '李四')

sh1.write(2, 1, '2021-02-13', styleDate)

sh1.write(2, 2, 100)

wb.save('D:\\Study\\python\\B站\\自动化excel\\testData\\file\\test3.xls')

0a382e09ed0f

image.png

5.Vlookup

Excel中通过Vlookup函数实现在正确的范围内找到响应的数据匹配值

而在python中匹配更加简单

第三方模块

pandas

code

import pandas as pd

"""

VlookUp 将两个excel关联,存储到一个新的excel中

"""

df1 = pd.DataFrame(pd.read_excel('D:\\Study\\python\\B站\\自动化excel\\testData\\file\\test3.xls'))

df2 = pd.DataFrame(pd.read_excel('D:\\Study\\python\\B站\\自动化excel\\testData\\file\\test4.xls'))

#左关联

result = pd.merge(df1, df2.loc[:, ['学号', '班级']], how='left', on='学号')

writer = pd.ExcelWriter('D:\\Study\\python\\B站\\自动化excel\\testData\\file\\test5.xls')

result.to_excel(writer, index=False)

writer.save()

test3

0a382e09ed0f

image.png

test4

0a382e09ed0f

image.png

test5

0a382e09ed0f

image.png

进阶操作

1. 拆分

拆分步骤

读取文件

拆分数据

生成不同的Excel表

code

#!/usr/bin/env python

# _*_ coding: utf-8 _*_

# @Time : 2021/2/13 22:01

# @Author : pl

# @Version:V 0.1

# @File : Excel进阶操作.py

# @desc :

# font表示字体 字体加粗 bold on

import xlwt

import pandas as pd

styleBR = xlwt.easyxf('font:name Times New Roman, color-index red,bold on')

styleDate = xlwt.easyxf(num_format_str='YYYY-MM-DD')

wb = xlwt.Workbook()

sh1 = wb.add_sheet('成绩')

sh1.write(0, 0, '学号', styleBR)

sh1.write(0, 1, '姓名', styleBR)

sh1.write(0, 2, '日期', styleBR)

sh1.write(0, 3, '成绩', styleBR)

for index in range(1,100):

sh1.write(index, 0, index)

sh1.write(index, 1, '张%d' % index)

sh1.write(index, 2, '2021-02-13', styleDate)

sh1.write(index, 3, index+10)

wb.save('D:\\Study\\python\\B站\\自动化excel\\testData\\file\\test6.xls')

# 将excel转换成数组

df_source = pd.read_excel('D:\\Study\\python\\B站\\自动化excel\\testData\\file\\test6.xls')

# 获取数组前5个数据

print(df_source.head())

# 获取几行几列 输出为元组(,)

print(df_source.shape)

total_row_count = df_source.shape[0]

user_names = ['MIKE', 'JANE', 'BOB', 'KEVIN', 'MAY', 'JAMES']

split_size = total_row_count//len(user_names)

# 存储拆分后的数据

df_subs = []

# enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。 所以才有index

for index, user_name in enumerate(user_names):

begin = index*split_size

end = begin+split_size

# 数组切割

df_sub = df_source.iloc[begin:end]

# 一个有索引的列表 元素为 对象数据

df_subs.append((index, user_name, df_sub))

# 变量 对应此时 元素的数据结构 索引,名字,数据

for idx, user_name, df_sub in df_subs:

file_name = f'D:\\Study\\python\\B站\\自动化excel\\testData\\file\\{idx}_{user_name}.xls'

df_sub.to_excel(file_name, index=False)

0a382e09ed0f

image.png

notice:

df_subs列表的元素数据结构

0a382e09ed0f

image.png

2.批量合并Excel文件

合并步骤

0a382e09ed0f

image.png

code

#!/usr/bin/env python

# _*_ coding: utf-8 _*_

# @Time : 2021/2/13 22:01

# @Author : pl

# @Version:V 0.1

# @File : Excel进阶操作.py

# @desc :

import os

import pandas as pd

# 存储待合并的文件

excel_names = []

for excel_name in os.listdir('D:\\Study\\python\\B站\\自动化excel\\testData\\file\\merge'):

excel_names.append(excel_name)

print(excel_names)

# 存储待合并文件的数据列表

df_list = []

for excel_name in excel_names:

excel_path = f'D:\\Study\\python\\B站\\自动化excel\\testData\\file\\merge\\{excel_name}'

df_split = pd.read_excel(excel_path)

df_list.append(df_split)

#数组合并

df_merge = pd.concat(df_list)

df_merge.to_excel('D:\\Study\\python\\B站\\自动化excel\\testData\\file\\merge\\new.xls')

notice:

Pandas 是基于 NumPy 的一个开源 Python 库,它被广泛用于快速分析数据,以及数据清洗和准备等工作

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值