首页 > 编程语言 >[Python学习笔记]制作自动将xls文件转化为xlsx文件的程序

[Python学习笔记]制作自动将xls文件转化为xlsx文件的程序

时间:2023-12-15 10:23:12浏览次数:36  
标签:文件 转换 xlsx Python xlsfilename 文件夹 xls

背景:供应商程序导出的文件是xls格式的,我需要使用Power Query将这些文件合并整理,但是目前没有找到可以打卡xls文件的代码,所以将xls文件转化为xlsx文件后再使用Power Query进行处理。

思路:

  1. 网上找到了将xls文件转化为xlsx文件的代码,将这个代码定义为一个函数去执行转换的功能;

  2. 在使用中,将目标文件夹的地址输入到cmd中,然后程序自动历遍每一个xls文件并将其转换为xlsx文件;

代码:

  1. 执行转换的代码,python的excel转换xls为xlsx几种方法 - CSDN文库

  2. 导入需要使用的module以及定义全局变量:全局变量有 a.输入的文件夹地址字符串,b.xls文件名列表,

import os
import pandas as pd

# 设定全局变量
folder_path = ''#xls文件夹路径
xlsfilename_list = ''#xls文件列表,从xls文件夹路径中导出

 

  3. 定义函数:将网上找到的执行代码定义为一个函数,此处输入输出的变量名要用自己之前定义的变量名,并且在函数内还需要定义一些局部变量。函数的输入是一个字符串,字符串的内容是xls文件的绝对地址。

#定义转换函数
def xls_to_xlsx(xlsfilename):
    temp = pd.read_excel(xlsfilename)#使用pd.read_excel来读取xls文件,输入为文件名称字符串
    xlsxfilename = xlsfilename.replace('.xls','.xlsx')#使用原文件名来命名新的xlsx文件,但是需要将后缀.xls改为.xlsx
    temp.to_excel(xlsxfilename,index = False)#将文件转化为xlsx文件
    return 

 

  4. 获取需要做变换的文件夹路径,并且将文件夹中的所有文件名全部获取

#交互输入地址并读取该地址下的文件名
print('请输入包含xls文件的地址并以回车结束')
folder_path = str(input())#输入的文件夹路径
os.chdir(folder_path)#将程序路径改为输入的文件夹路径
xlsfilename_list = os.listdir()#得到文件夹中所有文件的名称列表

 

  5. 使用for循环来历遍文件夹中的所有文件

#循环打开每一个xls文件并转换为xlsx文件
NumofCycle = len(xlsfilename_list)#获得路径中xls文件的数量,并且使用这个数量作为for循环的参数
for i in range(1,NumofCycle+1):
    print('正在转换第' + str(i) + '个文件')#提示目前正在转换的进度
    xls_to_xlsx(xlsfilename_list[i-1])#执行转换程序
print('转换完毕,退出请按任意键')#提示转换完毕

 

 

最终得到的整个程序如下:

# -*- coding: utf-8 -*-
"""
Created on Thu Dec 14 23:19:09 2023

@author: Ray
"""

import os
import pandas as pd

# 设定全局变量
folder_path = ''#xls文件夹路径
xlsfilename_list = ''#xls文件列表,从xls文件夹路径中导出

#定义转换函数
def xls_to_xlsx(xlsfilename):
    temp = pd.read_excel(xlsfilename)#使用pd.read_excel来读取xls文件,输入为文件名称字符串
    xlsxfilename = xlsfilename.replace('.xls','.xlsx')#使用原文件名来命名新的xlsx文件,但是需要将后缀.xls改为.xlsx
    temp.to_excel(xlsxfilename,index = False)#将文件转化为xlsx文件
    return 

#交互输入地址并读取该地址下的文件名
print('请输入包含xls文件的地址并以回车结束')
folder_path = str(input())#输入的文件夹路径
os.chdir(folder_path)#将程序路径改为输入的文件夹路径
xlsfilename_list = os.listdir()#得到文件夹中所有文件的名称列表


#循环打开每一个xls文件并转换为xlsx文件
NumofCycle = len(xlsfilename_list)#获得路径中xls文件的数量,并且使用这个数量作为for循环的参数
for i in range(1,NumofCycle+1):
    print('正在转换第' + str(i) + '个文件')#提示目前正在转换的进度
    xls_to_xlsx(xlsfilename_list[i-1])#执行转换程序
print('转换完毕,退出请按任意键')#提示转换完毕
os.system('pause')

 

 

问题以及解决办法:目前的程序不智能,还有以下几个问题需要处理:

  1. 无法识别文件夹中除了xls文件以外的其他文件,当路径中有xlsx文件以外,会将xlsx文件转化为xlsxx文件,很明显这会报错。目前需要人工确保文件夹中的所有文件为xls文件才能正确工作;解决这个问题的方法就是在执行循环中加一个判定的语句,判断文件名称中是否含有'.xls'字符串,如果包含则执行转换程序,不包含则continue

 

转换成exe文件:这个步骤是为了以后使用小程序方便,网络上有很多转换的案例,这里需要提示的就是:因为这个程序需要有人工输入交互,所以在转换时要把控制台打开,至少我在转换exe文件的时候如果没有加控制台-c的命令,最终exe文件是闪退的,代码没有问题,但是exe文件闪退。我加了-c的命令后就正常了。

 

------------祝愿大家都能用python提高自己的工作效率

标签:文件,转换,xlsx,Python,xlsfilename,文件夹,xls
From: https://www.cnblogs.com/purpleskying/p/17902519.html

相关文章

  • HTML5 文件上传下载的实例代码
    前言HTML5中提供的文件API在前端中有着丰富的应用,上传、下载、读取内容等在日常的交互中很常见。而且在各个浏览器的兼容也比较好,包括移动端,除了IE只支持IE10以上的版本。想要更好地掌握好操作文件的功能,先要熟悉每个API。FileList对象和file对象HTML中的input[type=......
  • 某高端智慧电车企业:规范文件外发流程,实现文件交换精细管控
    1、客户介绍某高端智慧电车品牌,隶属于世界500强汽车集团,成立于2018年,该品牌充分整合其所属母公司的多年造车技术积淀和优势资源,构建以用户为中心的创新商业模式,致力于成为“中国高端新能源乘用车领导者”,打造用户型科技企业,为用户创造现代格调的美好生活。2、建设需求基于业务......
  • 文件操作
    文件操作目录文件操作二进制文件和文本文件文件的打开与关闭打开文件关闭文件文件读写按字符读写文件读出字符fgetc()写入字符fputc()按字符串读写按字符串读fgets()按字符串写fputs()按格式读写按格式读fscanf()按格式写fprintf()按数据块读写数据块读fread()数据块写fwrite()文......
  • spring xml配置文件之context:annotation-config
    我们一般在含有Spring的项目中,可能会看到配置项中包含这个配置节点context:annotation-config。<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-......
  • backblaze b2通过cli下载大文件快照snapshots
    按照官方的常规方式,是先在cli下查看buckets  list-buckets找到b2snapshots的名称,然后通过download-file下载b2download-file--thread1b2://snapshots目录/备份文件名.注意下载大文件,最好是把现成设置成1-----------------------以上是常规方法,但是我下载了几......
  • python heapq 模块
    堆的概念堆是用数组表示的二叉树,分为大根堆和小根堆:大根堆是堆顶元素最大的堆,小根堆是堆顶元素最小的堆 堆的建立堆用列表来表示。在往堆中加入元素时,在列表最后加入一个元素并与其父节点比较(n/2位置)看是否需要进行交换,然后层层比较直到根节点pythonheapq#建立小根堆......
  • MacOS-“System Information”这个App用做USB设备的检测与设备文件的确定
    “SystemInformation”这个Apple自带的GUI小App是检测USB硬件的;如图所示;而Linux上是lsusb与lspci这类commandline的command;找到USB硬件的设备信息,需要与设备文件映射,怎么找?`bash-3.2#ls/dev/tty*|sort>sys.txt#连接USB硬件前bash-3.2#ls/dev/tt......
  • 基于FPGA的图像形态学腐蚀算法实现,包括tb测试文件和MATLAB辅助验证
    1.算法运行效果图预览 将FPGA的仿真结果导入到MATLAB,结果如下所示:   2.算法运行软件版本vivado2019.2 matlab2022a 3.算法理论概述      基于FPGA的图像形态学腐蚀算法实现主要依赖于图像处理的基本原理和数学形态学的基础知识。在图像处理中,形态学操......
  • 【TFTP】客户端上传文件
    1////客户端上传文件2#include<stdio.h>3#include<string.h>4#include<unistd.h>5#include<arpa/inet.h>6#include<netinet/in.h>7#include<sys/types.h>8#include<sys/stat.h>9#include<fcntl.h&g......
  • python: json
     fromtypingimportListimportjsonclassStudent(object):def__init__(self,first_name:str,last_name:str):self.first_name=first_nameself.last_name=last_name@propertydefFirstNmae(self):returnself.f......