陷在AttributeError中:当尝试在openpyxl中保存工作簿时,“int”对象没有属性“reindex”

我无法弄清楚这一点。 这是抱怨wb.save()行。 我不知道是什么原因造成的。 我怀疑这与尝试打开一张空白纸并在做格式化之后保存它有关系,但我无法想象我在那里做了什么导致这个问题。 当我打开现有的电子表格并进行操作时,它工作得很好,但是这要求我首先要有一个现有的电子表格。 在这里,我试图从头开始一个新的电子表格。

from bs4 import BeautifulSoup from lxml import etree import os, codecs import imageFilesSub import re import openpyxl, lxml from openpyxl.utils import get_column_letter, column_index_from_string homeEnv = 0 # 1 - home, 0 - work if homeEnv: filesDir = r'K:\Users\Johnny\My Documents\_World_of_Waterfalls\Website\tier 2 pages\tier 3 pages\tier 4 pages' filesOutDir = r'K:\Users\Johnny\My Documents\_World_of_Waterfalls\WordPressSite' else: filesDir = r'..\old_travelblog_writeups' filesOutDir = r'./' # First get the list of files to parse filesInDir = os.listdir(filesDir) filesToParse = [] for file in filesInDir: if ('travel-blog' in file) and (file.endswith('-template.html')): filesToParse.append(file) # Open up the travelBlog spreadsheet and set it up wb = openpyxl.Workbook() sheet = wb.active sheet.name = "travelBlog List" sheet['A1'].value = 'Blog No.' sheet['B1'].value = 'Title' sheet['C1'].value = 'Category' sheet['D1'].value = 'Keyword Tags' sheet['E1'].value = 'Excerpt' sheet['F1'].value = 'Featured Image Filename' sheet['G1'].value = 'Featured Image Alt Text' sheet['H1'].value = 'Start Date' sheet['I1'].value = 'End Date' sheet['J1'].value = 'Old Web Address' sheet['K1'].value = 'New Travel Blog Body Filename' sheet['L1'].value = 'Old Travel Blog Template to parse' sheet.freeze_panes = 'C2' sheet.column_dimensions['A'].width = 10 sheet.column_dimensions['H','I'] = 20 sheet.column_dimensions['B','F','J','K','L'] = 40 sheet.column_dimensions['D','E'] = 50 from openpyxl.styles import Font headerFontObj = Font(name='Arial', bold=True) for col in range(1,sheet.max_column): sheet.cell(row=1, column=col).font = headerFontObj wb.save('travelBlogParsed.xlsx') 

在此先感谢,约翰尼

我想到了。 问题如下:

 sheet.column_dimensions['H','I'] = 20 sheet.column_dimensions['B','F','J','K','L'] = 40 sheet.column_dimensions['D','E'] = 50 

首先,显然,你不能在vector上使用column_dimensions方法。 参数必须是一个string。 其次,这些行缺less.width属性。 所以这些线应该是:

 sheet.column_dimensions['H'].width = 20 sheet.column_dimensions['I'].width = 20 sheet.column_dimensions['B'].width = 40 ... sheet.column_dimensions['E'].width = 50