操作excel数据:一个合并单元格内容的实践
今天我要用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)
分类:
04.python基础
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
2018-03-06 linux下安装mysql