编写 Python 脚本整理Excel资料

本文介绍如何使用Python脚本快速整理Excel资料,避免手动处理大量数据。内容包括将中文名与英文名分列以及合并同类物品属性,适用于处理2003版Excel文件。
摘要由CSDN通过智能技术生成

今天接到同事的一个求助,需求呢是把一个Excel的资料重新整理。具体操作很简单,把其中列的中文名和英文名分开,在后面一列增加英文名的列,然后把同类的物品属性也做一个行合并,具体如下图。

修改之后变成这样 

so easy!但是总共接近3000条,难道要一条一条手动修改吗?_(:з」∠)_……

还好,我们使用Python写一个脚本可以很简单的帮我们解决这个问题,话不多说上Code

import xlrd
import xlwt
import re
import sys
from xlutils.copy import copy

def read03Excel(path):
    workbook = xlrd.open_workbook(path)
    wb = copy(workbook) 

    sheets = workbook.sheet_names()

    worksheet = workbook.sheet_by_name(sheets[0])
    sheet = wb.get_sheet(0) 
    tempStr = ''
    for i in range(0, worksheet.nrows):
        row = worksheet.row(i)
        for j in range(0, worksheet.ncols):
            if j == 3:
                if contain_zh(worksheet.cell_value(i, j)) :
                    print(worksheet.cell_value(i, j), "\t", end="")
                else:
                    if contain_zh(worksheet.cell_value(i-1, j)):
                        sheet.write(i-1, j+1, worksheet.cell_value(i, j))
                    else:
                        sheet.write(i-2, j+1, worksheet.cell_value(i-2, j+1)+worksheet.cell_value(i, j))

                    sheet.write(i, j, '')

            if j == 9:
                print(i)
                print(checkFeature(i,worksheet))

                if checkFeature(i,worksheet) == i:
                    tempStr = str(worksheet.cell_value(i, j))
                    if not tempStr.endswith(',') and  tempStr is None:
                        tempStr = tempStr + ','    
                else:
                    tempStr = str(tempStr) + str(worksheet.cell_value(i, j))
                sheet.write(i, j, '')
                sheet.write(checkFeature(i,worksheet), j, tempStr)





    wb.save('Documents/demo/target.xls')

    print()


def checkFeature(index,worksheet):
    if index==0:
        return 0
    if index==1:
        return 1
    if index > 1:
        if worksheet.cell_value(index, 2) == worksheet.cell_value(index - 1, 2):
            return checkFeature(index-1,worksheet)
        else:
            return index


zh_pattern = re.compile(u'[\u4e00-\u9fa5]+')

def contain_zh(word):

    global zh_pattern
    match = zh_pattern.search(word)


    return match





file_test = 'Documents/demo/test.xls'

write03Excel(file_target)

首先环境都要配好,另外2003的Excel和2007以后的Excel的格式不一样,需要区分处理,因为我需要处理的是xls格式的,所以就直接用2003之前的处理方法啦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值