python 实现批量xls文件转csv文件

引言:以前写的一个批量xls转csv的python简单脚本,用的是python2.7

#coding=utf-8
import os
import time
import logging
import xlrd
import csv

#xls文件存放路径
INPUTPATH= u"D:\\lsssl\\桌面\\xls文件"

#生成的csv文件存放路径
OUTPATH = u"D:\\lsssl\桌面\\csv"


class changeCenter:
    def __init__(self):
        pass
    def getvalue(self,filename):
        self.mData = []
        xlsfile=xlrd.open_workbook(filename)
        table = xlsfile.sheet_by_index(0)#sheet1
        rownum = table.nrows #行
        colsnum = table.ncols #列
        for i in range(0,rownum):
            row = []
            for j in range(0,colsnum):
                value = table.cell_value(i,j)
                if not isinstance(value,float):
                    value = value.encode('gbk')#非数字转一下码
                row.append(value)
            self.mData.append(tuple(row))
    def write(self, path, filename):
        if not os.path.exists(path):
            os.makedirs(path)
        csvfile = file("tmp","wb")
        writer = csv.writer(csvfile)
        writer.writerows(self.mData)
        csvfile.close()
        
        if os.path.exists(os.path.join(path,filename+".old")):
            os.remove(os.path.join(path,filename+".old"))
        if os.path.exists(os.path.join(path,filename)):
            os.rename(os.path.join(path,filename),os.path.join(path,filename+".old"))
        os.rename('tmp', os.path.join(path,filename))
        logging.info("write file finish")
        print "write",filename," finish"


def handleExcel():
    files,dirs,root = readFilename(INPUTPATH)
    for fi in files:
        strstock = os.path.join(INPUTPATH,fi)
        if os.path.exists(strstock):
            st = changeCenter()
            st.getvalue(strstock)
            name = fi.replace(".xls","")
            st.write(OUTPATH, name+".csv")
        else:
            print strstock+" don't exist"

#获取某个路径下的所有文件   
def readFilename(file_dir):
    for root, dirs, files in os.walk(file_dir): 
        return files,dirs,root
    
if __name__ == '__main__':
    handleExcel()


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值