- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个简短的程序,它收集文件夹/子文件夹中所有 .xls 文件的列表,然后遍历文件列表,打开每个 xls 文档(尝试: book = xlrd.open_workbook(f) )以查找特定信息.如果抛出异常,我将文件名写到异常列表中。我发现我有很多 xlrd 抛出错误的文件:
Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
book = xlrd.open_workbook(f)
File "C:\Python32\lib\site-packages\xlrd\__init__.py", line 435, in open_workbook
ragged_rows=ragged_rows,
File "C:\Python32\lib\site-packages\xlrd\book.py", line 116, in open_workbook_xls
bk.parse_globals()
File "C:\Python32\lib\site-packages\xlrd\book.py", line 1206, in parse_globals
self.handle_filepass(data)
File "C:\Python32\lib\site-packages\xlrd\book.py", line 924, in handle_filepass
raise XLRDError("Workbook is encrypted")
xlrd.biffh.XLRDError: Workbook is encrypted
最佳答案
我遇到了同样的问题,正如@zindorsky 在他们的评论中提到的那样,当文件具有 protected 工作表时可能会发生这种情况 - 或者由于 Excel 使用魔术密码静默加密文件的其他原因 VelvetSweatshop
.
XLRD 无法单独处理加密文件(实际上 README 将其列为“不太可能完成”),但最近有另一个 Python 库可以解密各种 MS Office 文件(包括 .xls 文件) ) - msoffcrypto-tool .
我能够使用它成功解决该问题 - 这是代码的缩写(且未经测试!)片段版本
import xlrd
import msoffcrypto
def handle_protected_workbook(wb_filepath):
try:
_book = xlrd.open_workbook(wb_filepath)
except xlrd.biffh.XLRDError, e:
if e.message == "Workbook is encrypted":
# Try and unencrypt workbook with magic password
wb_msoffcrypto_file = msoffcrypto.OfficeFile(open(wb_filepath, 'rb'))
try:
# Yes, this is actually a thing
# https://nakedsecurity.sophos.com/2013/04/11/password-excel-velvet-sweatshop/
wb_msoffcrypto_file.load_key(password='VelvetSweatshop')
except AssertionError, e:
if e.message == "Failed to verify password":
# Encrypted with some other password
raise # or do something else
else:
# Some other error occurred
raise
except:
# Some other error occurred
raise
else:
# Magic Excel password worked
assert wb_filepath.endswith('.xls')
wb_unencrypted_filename = wb_filepath[:-(len('.xls'))] + '__unencrypted.xls'
with tempfile.NamedTemporaryFile() as tmp_wb_unencrypted_file:
# Decrypt into the tempfile
wb_msoffcrypto_file.decrypt(tmp_wb_unencrypted_file)
# --- Do something with the file ---
# return true to indicate file was touched
return True # or do something else
else:
# some other xlrd error occurred.
return False # or do something else
except:
# some non-xlrd error occurred.
return False # or do something else
关于python - xlrd - 错误 "Workbook is encrypted",Python 3.2.3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22789951/
xlrd 模块可以更改文件属性吗?如作者、标题、主题等。 我想更改 .xls 文件的属性,但不知道该怎么做。 最佳答案 据我所知,xlrd 是不可能的. rd名称的一部分表示“只读”。您需要使用 xl
我正在尝试使用 xlrd 操作 .xls 文件,如下所示: >>> import xlrd >>> workbook = xlrd.open_workbook('6h.xls') 我得到: Trace
我想将一个 excel 范围分配给一个变量: import xlrd file = r"C:\Users\Lisa\Desktop\Frank\export.XLSX" book = xlrd.ope
import xlrd wb = xlrd.open_workbook("file.xls") wb.sheet_names() sh = wb.sheet_by_index(0) for item
根据XLRD模块的文档, row_values(rowx, start_colx=0, end_colx=None) “返回给定行中单元格值的一部分。” 并给出以下 python 代码: impor
我有特定结构的 exel 文件。第一行是标题,第二行是名称,最后一行是值。我只需要标题和值,如果 Excel 文件只有 3 行,这并不难,但它可以是 100 行和列,我只需要获取标题和值,而不是任何名
我正在尝试编写一个 python 程序,用于使用 xlrd 和 xlwt 将 csv 文件中的实时股票报价附加到 excel 文件(已打开)。 任务概述如下。 从我的股票经纪人应用程序中,我的硬盘上不
嗨,我刚刚拿起 xlrd。关于访问工作表和单元格属性,我指的是Xlrd Column 那里的代码显示。 for crange in thesheet.col_label_ranges: rlo
我有一个脚本,如果我传递文件名,我就可以打开文件,但现在文件的数量正在增加,并且必须在每个文件上单独运行该脚本是没有意义的。所以我决定让python读取目录中的所有文件。 for root, dirs
我有一个具有以下结构的电子表格(数据从 B 列开始。A 列为空) A B C D Name city salary J
我正在使用 xlrd 和 python 来提取 Excel 数据,一切都很好,数据提取也很好,但代码只提取最后一行数据。 这是我的 Excel +-------------------+-------
我是 python 的新手,我正在尝试读取 .xls 文件并查看每行的第一列以查看它是否与我的变量匹配。我不确定我做错了什么,希望有人可以帮助我。我的最终目标是找到第一列中以此变量开头的每一行,然后删
我在 API 中找不到任何内容。有没有办法根据字符串匹配返回单元格的行号或坐标?例如:您给脚本一个字符串,它会扫描整个 .xls 文件,当它找到具有匹配字符串的单元格时,它会返回坐标或行号。 最佳答案
在 Python 中使用 XLRD 从 Excel 中读取。 简单的场景。我有一个带有值的单元格,它与命名范围相关联。 NamedRange "Foo"= Sheet1!$A$1A1中的值为“Bar”
有没有办法处理程序中的xlrd错误?我对数以千计的 excel 文件有一个复杂的问题。我正在尝试解析文件列表,打开每个电子表格并确定电子表格是否具有特定的选项卡或工作表。使用匹配的工作表名称创建一个新
我正在尝试从 xls 文件中读取一个长数字 (6425871003976),但 python 在将其读取为数字而不是字符串 (6.42587100398e+12) 之前一直在中继它。有什么方法可以直接
我正在使用 xlrd 读取 xls 文件。问题是,当 xlrd 读取这样的值时 "12/09/2012",我得到这样的结果 "xldate:41252.0"。当我使用 xlrd.xldate_as_t
我在 xlrd 中从 Excel 中读取特定单元格值时遇到困难。我正在读取的任何值(日期值)都将转换为数字。我知道有将其转换为 python 日期格式的解决方案,但我可以直接读取 xlrd 中的字符串
我使用 pip3 install 安装了 pandas 和 matplotlib。然后我运行了这个脚本: import pandas as pd import matplotlib.pyplot as
先用xlrd读excel文件--》book对象a 拿到指定的sheet页 xlrd对象 用xlutils copy 的copy方法复制 a得到b 通过判断a的列值,来修改b 保存b 得到结果
我是一名优秀的程序员,十分优秀!