openpyxl retorna valores numéricos
Pergunta
Eu tenho um script Python usando openpyxl para ler um arquivo Excel.Isso costumava funcionar bem, até que descobri que o openpyxl não estava instalado corretamente, o que me causou erros ao executar o script fora do meu IDE.Depois de corrigir isso, no entanto, o script retorna valores numéricos dos quais não entendo de onde eles vêm, em vez dos valores reais.
O roteiro:
wb=load_workbook(r'C:\test.xlsx', use_iterators = True)
ws=wb.get_sheet_by_name('Sheet1')
#Iterate trough all rows
for row in ws.iter_rows(row_offset=1):
for cell in row:
#If the column == A, check if there's a website value
if cell.column == 'A':
try:
print cell.internal_value
self.match = re.match(regex, cell.internal_value)
if self.match:
self.match = 'OK'
except:
pass
O print no bloco try é adicionado para ver o que é retornado pelo programa, que é o seguinte para os primeiros cinco registros:
0
1
31
49
143
Deveria ser:
None
Website
www.coolblue.nl
www.bol.com
www.elektrosky.nl
Por que meu script retorna esses valores numéricos em vez dos valores reais?
EDITAR: Primeiras 6 linhas do meu arquivo xml (a primeira linha está vazia)
Website | Sender | Price | Mark(s) | Payment methods
www.coolblue.nl PostNL Free Thuiswinkel Ideal, Visa, Mastercard
www.bol.com PostNL Free Thuiswinkel Ideal, Visa, Mastercard
www.elektrosky.nl PostNL € 5,00 Webshop keurmerk Ideal, Visa, Mastercard, Amex, PayPal
www.belsimpel.nl PostNL, DPD € 6,95 Thuiswinkel Ideal, Visa, Mastercard
Solução
O problema é que você está usando .internal_value
.Por padrão, o Excel armazena strings em uma tabela de pesquisa e mantém o índice na célula.Você deve ficar bem se apenas usar .value