python-3.x 将.xls文件更改为.xlsx文件[已关闭]

dxxyhpgq  于 2023-01-03  发布在  Python
关注(0)|答案(1)|浏览(107)

昨天关门了。
Improve this question
我基本上是试图迭代通过一堆excel. xls文件,并将它们更改为. xlsx文件,我真的不知道从这里去哪里。感觉我把代码弄得一团糟。
我收到以下错误:类型错误:列表目录:路径应为字符串、字节、os.PathLike或None,而不是列表
所以我对代码做了一些改动,它可能会有什么结果。我编辑了下面的代码。

file_path = Path.home().joinpath("Desktop", "test")
excel = win32.gencache.EnsureDispatch('Excel.Application')

if __name__ == "__main__":
    while True:
        the_path = (str(file_path) + str("\\"))
        print(the_path)
        os.chdir(the_path)

        xls_files = os.listdir('.')
        print(xls_files)

        for downloadedFile in listdir(xls_files):
            if downloadedFile.endswith('.xls'):
                wb = excel.Workbooks.Open(xls_files)
                pyexcel.save_book_as(downloadedFile, FileFormat = 51)
                downloadedFile.Close()
                downloadedFile.Save()
        excel.Application.Quit()

我真的不知道我写的代码是否有意义。如果有人能帮我弄清楚我是否至少在正确的轨道上,我会很棒。
谢谢你的帮助!

gr8qqesn

gr8qqesn1#

pyexcel似乎是完成此任务的合适工具。
1.安装三个软件包

pip install pyexcel pyexcel-xls pyexcel-xlsx

1.运行以下脚本。

from pathlib import Path
import pyexcel as p

# Find your home path by print out `Path.home()`
# Then add additional path that points to the folder that
# contains all the .xls files.
# We are essentially using absolute path here, but change
# it to relative path if necessary.
folder = Path.home().joinpath('Desktop/test')

# Iterate all the files inside the folder.
# Pick the .xls file only and convert it to .xlsx file
# The converted file will have the same name.
# E.g. foo.xls will be converted to foo.xlsx
for file in folder.iterdir():
    if '.xls' in file.suffix:
        book = p.get_book(file_name=str(file))
        book.save_as(file.stem + '.xlsx')

注:
1.这个脚本只在macOS中测试过,而没有在Windows中测试过。为了满足Windows中的文件系统,可能需要进行一些具体的调整。但是,pathlib应该能够处理Windows的特性。
1.如果出现特殊需要,请调整脚本。

相关问题