• 操作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)
  • 相关阅读:
    mount: error mounting /dev/root on /sysroot as ext3: Invalid argument
    redhat5.8 alt+ctrl+f1 黑屏
    Linux U盘 启动盘
    Debian For ARM Webmin Server
    Debian For ARM mysql-server install information
    fakeroot: preload library `libfakeroot.so' not found, aborting.
    FAT-fs (mmcblk0p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
    JavaScript获取table中某一列的值的方法
    SpringMvc(注解)上传文件的简单例子
    SpringMVC单文件上传、多文件上传、文件列表显示、文件下载
  • 原文地址:https://www.cnblogs.com/hanmk/p/15961202.html
Copyright © 2020-2023  润新知