【发布时间】:2021-03-23 00:56:07
【问题描述】:
我写了一个简单的脚本来读取一千个 xlsx 文件,文件有 400~500 张表和超过 50 个字符的名称。在获得工作表名称后,脚本会将这些名称保存到最终上传到数据库的 csv 文件中。这是脚本:
extension = 'XLSX'
xlsxfiles = [i for i in glob.glob('*.{}'.format(extension))]
for xlsxfile in xlsxfiles:
fins = op.load_workbook(xlsxfile,read_only=True)
sheetnames = fins.sheetnames
with open('test_xlsx-'+xlsxfile+'.csv','w',newline = '') as fout:
fout.write(str(xlsxfile))
我有两个问题需要帮助:
-
Openpyxl load_workbook 仅返回 31 个字符的工作表名称。如果超过 31,它会截断为“Sheetname something something_4””,但应该是 “表名一些真实的东西” 我试过 Pandas.ExcelFile.sheet_names 但遇到了同样的问题。
-
CSV 文件将工作表名称逐列保存。
['Cover Page' 'Sheetname something something_4' 'Sheetname other']
但我需要将数据逐行删除并删除所有“[”或“'”。
Cover Page
Sheetame something something Real
Sheetname other
我是 Python 新手。欢迎所有想法和 cmets。
【问题讨论】:
-
Excel 限制为 31 个字符:social.msdn.microsoft.com/Forums/sqlserver/en-US/… 我不确定这些工作表的名称是如何变长的,但 Excel 的 UI 不支持。
-
是的,没错,Excel UI 不支持工作表名称中超过 31 个字符。但是,允许 Excle 文件本身这样做。我认为最多可以包含 255 个字符。