如何解决“ValueError:无法转换为Excel”? (使用Python和openpyxl)

问题描述 投票:0回答:2

我正在使用lxml从网站上刮价,我想使用openpyxl将该价格插入现有的Excel文件中。当我运行代码时,我收到错误“ValueError:无法将['$ 364']转换为Excel”('$ 364是报废价格)。我该如何解决?似乎第11行的代码:sheet['A1'] = price就是问题所在。我的enitre代码如下。

from lxml import html
import requests
page = requests.get('http://www.randomlengths.com/Woodwire/RL-Lbr-Pnl/')
tree = html.fromstring(page.content)
price = tree.xpath('//*[@id="main-frame"]/div/div[1]/table/tbody/tr[2]/td[2]/strong/text()')
print(price)

import openpyxl
xfile = openpyxl.load_workbook('C:/Users/noah.merkousko/randomlengthslumber.xlsx')
sheet = xfile.get_sheet_by_name('Framing Lumber')
sheet['A1'] = price
xfile.save('random lengths lumber test.xls') 
python excel openpyxl valueerror
2个回答
1
投票

“ValueError:无法将['$ 364']转换为Excel”告诉您错误。您正在尝试将列表['$364']放入包含值的单元格中。您可以通过在将其放入Excel时进行索引或在从在线解析时进行索引来解决此问题。

选项1:

price = tree.xpath('//*[@id="main-frame"]/div/div[1]/table/tbody/tr[2]/td[2]/strong/text()')[0] # index at 0

选项2:

sheet['A1'] = price[0] # index when you put into Excel

值得注意的是,如果网站被更改并且价值不再位于IndexValue,这可能会引入'//*[@id="main-frame"]/div/div[1]/table/tbody/tr[2]/td[2]/strong/text()'错误,但否则应解决您的问题


0
投票

您可以将错误视为异常。

try:
    sheet['A1'] = price
except ValueError:
    print("Handling the error case")
© www.soinside.com 2019 - 2024. All rights reserved.