今天我要用python赋能一下自己 背景:最近会用excel处理数据,需要把表格中每一行第三列之后所有列的内容进行合并,然后还要删掉第一列 因为excel玩得不够六,我都是手动合并,做多了感觉很浪费时间,所以就产生了用python来处理的想法 例如,原始表格如下
处理后,希望变成
思路: 1、从原始excel文件中,提取出数据,此时每一行的数据会组合成一个列表,因为需要舍弃第一列,所以在提取数据时,可以直接从第二列开始提取; 2、接着上面,去掉第一列数据后,处理后续提取到的每一行数据:首先第1个和第2个数据保持原有形态不动,它俩先组成一个列表data,然后把第3个及其后面的数据合并为一整个字符串,最后把这个字符串追加到第列表data后面; 3、最后把处理后的数据写入一个新的excel文件 代码如下: 使用xlrd库读取数据,使用 xlsxwriter库 向一个excel写入数据
# coding: utf-8
"""
author: hmk
detail:
create_time:
"""
import xlrd
import xlsxwriter
class AutoOperateExcel:
@staticmethod
def get_data_excel(filepath):
workbook = xlrd.open_workbook(filepath)
sheet = workbook.sheet_by_index(0)
data = []
for i in range(0, sheet.nrows):
data.append(sheet.row_values(i)[1:]) # 获取excel每一行的数据,然后每一行的数据从第二列开始截取
# for m in data:
# print(m)
return data
def write_data_excel(self, filepath1, filepath2):
workbook = xlsxwriter.Workbook(filepath2)
sheet = workbook.add_worksheet()
original_data = self.get_data_excel(filepath1)
data = []
for j in original_data:
data.append(j[0:2] + (''.join(j[2:])).split("不存在的字符"))
# j[0:2]表示提取列表中的第1个、第2个元素,把它俩形成一个新的列表m
# ''.join(j[2:])表示把列表中的第3个元素及其之后的元素组合为一整个字符串
# 使用split()把字符串转换为一个列表n,并且这个列表中只有这一个字符串,注意分隔符要用一个字符串中不存在的元素,不然会把这个字符串分割为多个部分
# 最后把m和n组合在一起,把它们追加到data中
for k in range(len(data)):
# print(len(data[k])) # 逐行把data中的元素写入excel中的每一行
for p in range(len(data[k])):
sheet.write(k, p, data[k][p]) # 把每一行数据分别写入excel对应的坐标
workbook.close()
if __name__ == '__main__':
file1 = '/Users/admin/Desktop/aa.xlsx'
file2 = '/Users/admin/Desktop/bb.xlsx'
test = AutoOperateExcel()
# test.get_data_excel(file1)
test.write_data_excel(file1, file2)
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有