2017-01-05 7 views
0

Я не могу понять это. Он жалуется на строку wb.save(). Я понятия не имею, что вызывает это, когда я ударился головой об этом. Я подозреваю, что это имеет какое-то отношение к попытке открыть пустой лист и сохранить его после выполнения форматирования, но я не могу представить, что я там делаю, что вызывает эту проблему. Он отлично работал, когда я открыл существующую таблицу и делал манипуляции, но это потребовало от меня иметь существующую таблицу в первую очередь. Здесь я пытаюсь запустить новую таблицу с нуля.Застрял на AttributeError: объект «int» не имеет атрибута «reindex» при попытке сохранить книгу в openpyxl

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') 

Спасибо заранее, Джонни

ответ

1

я понял это. Проблема была следующие строки:

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

Прежде всего, по-видимому, вы не можете использовать метод column_dimensions на векторе. Аргумент должен быть строкой. Во-вторых, в этих строках отсутствовал атрибут .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