【问题标题】:Open protected excel file too slow打开受保护的 excel 文件太慢
【发布时间】:2021-01-17 04:10:37
【问题描述】:

我开发了一个脚本,它使用 xlwings 打开大量受保护(不受密码保护,只是受保护)的 excel 文件,读取每个文件中的一列并将其写入字典,然后关闭。它可以正常工作而不会产生任何错误,但是速度非常慢。 有没有比我下面的代码更快的方法?

import xlwings as xw

def unprotect_xls(filename, date):

    workbook = xw.Book(filename)
    sheet = workbook.sheets['Table1']

    error_length[date] = dict(zip(range(1,21), sheet['BN7:BN26'].value))

    workbook.close()


#### not working example ####
file_names = ['file1', 'file2', ..., 'file999']
dates = ['date1', ...]

new_files = len(file_names) 

# make dict
error_length = {}

# open excel in background
app = xw.App(visible=False)

#fill dict
for i in range(new_files):
    unprotect_xls(file_names[i], dates[i])

app.quit()

【问题讨论】:

    标签: python excel protected xlwings


    【解决方案1】:

    您是否考虑过使用openpyxlxlrd 来完成这项任务?您还可以使用 pandas.read_excel 函数,该函数在后台使用这些软件包之一。如果您需要与 Excel 交互,xlwings 非常棒,但如果您只需要批量读取单元格值,那么阅读器库可能更适合。

    【讨论】:

    • 我都试过了,但由于我有旧的 .xls 文件,openpyxl 不起作用,xlrd 无法完成任务。只有 xlwings 能够访问我的文件。
    • xlrd 有什么问题?
    • 产生警告:警告 *** 文件大小 (192888) 不是 512 + 扇区大小的倍数 (512) 警告 *** OLE2 不一致:SSCS 大小为 0 但 SSAT 大小非零,创建一个空的数据框。找不到解决办法
    • 警告 *** 文件大小 (192888) 不是 512 + 扇区大小的倍数 (512) 警告 *** OLE2 不一致:SSCS 大小为 0 但 SSAT 大小非零
    猜你喜欢
    • 1970-01-01
    • 2019-07-19
    • 1970-01-01
    • 2013-10-27
    • 2014-04-29
    • 1970-01-01
    • 2021-08-04
    • 2021-03-28
    • 1970-01-01
    相关资源
    最近更新 更多