xls文件转为csv文件(涉及循环)

看了网上的一些转换方法,感觉和本人想做出来的东西有些不同,因为涉及到4000多个xls文件,所以得有个方法来循环。其次,我这些文件内容的行和列都是一样的,只有里面的值不同,文件名也只要转换后一样就行(最好能把#号去掉)

#-*- coding:utf-8 -*-
import os
import pandas as pd
import re

path = r"E:\xxx" #读取excel目录路径
outpath = r"E:\xxx2" #输出csv目录路径

FileNames=os.listdir(path)
for fn in FileNames:
    if re.search(r'\.xlsx?$',fn):
        fullfilename=os.path.join(path,fn)
        fn2 = re.sub(r'\.xlsx?$','.csv',fn)
        fn2 = re.sub('#','',fn2)
        fullfilename2=os.path.join(outpath,fn2)
        df = pd.read_excel(fullfilename)
        df.to_csv(fullfilename2,index=0)
        print(fullfilename,"-->",fullfilename2)

 

用poi的Excel技术就可以实现的,CVS其实就是文本文件,\t 为字段分割,\n 换行

参考这个

import xlrd
import xlwt

def read_excel():
    # 打开文件
    workBook = xlrd.open_workbook('data/HanXueLi_201801.xlsx');

    # 1.获取sheet的名字
    # 1.1 获取所有sheet的名字(list类型)
    allSheetNames = workBook.sheet_names();
    print(allSheetNames);

    # 1.2 按索引号获取sheet的名字(string类型)
    sheet1Name = workBook.sheet_names()[0];
    print(sheet1Name);

    # 2. 获取sheet内容
    ## 2.1 法1:按索引号获取sheet内容
    sheet1_content1 = workBook.sheet_by_index(0); # sheet索引从0开始
    ## 2.2 法2:按sheet名字获取sheet内容
    sheet1_content2 = workBook.sheet_by_name('Sheet1');

    # 3. sheet的名称,行数,列数
    print(sheet1_content1.name,sheet1_content1.nrows,sheet1_content1.ncols);

    # 4. 获取整行和整列的值(数组)
    rows = sheet1_content1.row_values(3); # 获取第四行内容
    cols = sheet1_content1.col_values(2); # 获取第三列内容
    print(rows);

    # 5. 获取单元格内容(三种方式)
    print(sheet1_content1.cell(1, 0).value);
    print(sheet1_content1.cell_value(2, 2));
    print(sheet1_content1.row(2)[2].value);

    # 6. 获取单元格内容的数据类型
    # Tips: python读取excel中单元格的内容返回的有5种类型 [0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error]
    print(sheet1_content1.cell(1, 0).ctype);

用你说的方法, 试下这个:

1 第一步获取文件夹下面所有后缀为xls的文件

2 第二步循环遍历, 读取文件,并另存为csv

# 导入工具包
import pandas as pd
import numpy as np
import os

# 路径
path = 'c:/users/用户/desktop/新建文件夹/'

# 文件列表
files = []
for file in os.listdir(path):
    if file.endswith(".xls"):
        files.append(path+file)


# 遍历所有文件
for file in files:
    datai = pd.read_excel(file)
    datai.to_csv(file.split('.')[0]+'.csv')

 

本人是想以python为背景实现循环,类似这样

本人设想最好是能通过一些基于python写的方法来实现结果,比如os包,pandas包下的一些方法

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

头疼,现在我按照前辈的代码会出现找不到类似excel文件的错误,因为我最原始的文件的后缀名为xls,不是xlsx,但如果我讲下面的代码中xls改成xlsx的确可以运行,但在输出路径下会没有文件