欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

【项目2】将csv文件转为xlsx

程序员文章站 2023-08-22 22:45:07
以后再追加注释 ......

以后再追加注释

#! python3
'''
Author: i_orange

将csv转为xlsx的小程序

'''
import csv, openpyxl, os, time

def convert():
    pass

print('%%请将要转换的csv文件放置到空文件夹下%%')

path = input('请输入csv文件所在文件夹路径:')

pathList = path.split(os.sep)
newPath = (os.sep).join(pathList)

#0.切换到工作目录
os.chdir(newPath)

#1.程序计时
start = time.clock()
data = time.strftime('%Y%m%d%H%M%S')

#2. 计数
count = 1

#2.创建处理后的保存目录
newDir = ['转换后',data]
pathList.extend(newDir)

newPath1 = (os.sep).join(pathList)
os.makedirs(newPath1,exist_ok = True)

#3.列出工作目录下的文件
for folderName, subFolderNames, fileNames in os.walk(newPath):
##    print('当前所在文件夹名称:'+ folderName)
    #子文件夹
    for subFolderName in subFolderNames:
##        print('包含的子文件夹有:'+ subFolderName)
        pass

    #子文件
    for fileName in fileNames:
##        print('包含的文件有:' + fileName)

        if fileName.endswith('csv'):
            #创建空的xlsx
            wb = openpyxl.Workbook()
            sheet = wb.create_sheet()
            sheet.title = 'Sheet1'

            del wb['Sheet']
            #
            with open(fileName,'r') as f:
                lines = csv.reader(f)
                i = 1

                for k,line in enumerate(lines):
##                    print(k)
                    numLines = len(line)    #列数
                    for j in range(0,numLines):
                        try:
                            sheet.cell(row=k+1,column=j + 1).value = float(line[j])
                        except ValueError:
                            sheet.cell(row=k+1,column=j + 1).value = line[j]
                wb.save(newPath1 + os.sep + fileName.split('.csv')[0] + '.xlsx')
                count += 1
                print(fileName + '转换完成')
    end = time.clock()
print('数据处理耗时:%f s \n处理文件数:%d' %((end-start),count))