2013-10-02 6 views
0

Я пытаюсь выяснить, как добавить данные в электронную таблицу Excel с помощью openpyxl, но я не понял, как писать значения в отдельные ячейки Excel. То, что я хочу сделать, - сохранить результаты печати из цикла в первые четыре строки Excel и сохранить его как basic_data. Вот код, спасибо за ваши советы и, пожалуйста, дайте мне знать, знаете ли вы о каких-либо хороших учебниках для openpyxl.Openpyxl & Python

from openpyxl import Workbook 
import urllib 
import re 

symbolslist = ["aapl","spy","goog","nflx"] 

from openpyxl import load_workbook 
wb2 = load_workbook('fundamental_data.xlsx') 

i=0 
while i<len(symbolslist): 
    url = "http://finance.yahoo.com/q?s="+symbolslist[i]+"&q1=1" 
    htmlfile = urllib.urlopen(url) 
    htmltext = htmlfile.read() 
    regex = '<span id="yfs_l84_'+symbolslist[i]+'">(.+?)</span>' 
    pattern = re.compile(regex) 
    price = re.findall(pattern,htmltext) 
    print "The price of", symbolslist[i], " is ", price 
    i+=1 




wb = Workbook() 
wb.save('fundamental_data.xlsx') 

ответ

3

Глядя на цены на указанный URL работает хорошо, только вы забыли указать, в котором листы/клетки вы хотите записать данные. Сделайте это:

wb = Workbook() 
# select sheet 
ws = wb.active 

i = 0 
while i<len(symbolslist): 
    url = "http://finance.yahoo.com/q?s="+symbolslist[i]+"&q1=1" 
    htmlfile = urllib.urlopen(url) 
    htmltext = htmlfile.read() 
    regex = '<span id="yfs_l84_'+symbolslist[i]+'">(.+?)</span>' 
    pattern = re.compile(regex) 
    price = re.findall(pattern,htmltext) 
    print "The price of", symbolslist[i], " is ", price 
    # specify in which cell you want to write the price 
    # in this case: A1 to A4, where the row is specified by the index i 
    # rownumber must start at index 1 
    ws.cell(row=i+1, column=1).value = price[0] 
    i += 1 

И в конце концов (берегитесь это будет просто перезаписывать существующие данные):

wb.save('fundamental_data.xlsx') 

Кроме того, вы можете сравнить его со следующим openpyxl documentation

И если вы хотите больше информацию о модуле openpyxl, вы можете открыть консоль python:

>>> import openpyxl 
>>> help(openpyxl) 

или для конкретного содержимого пакета:

>>> help(openpyxl.workbook) 
1
import openpyxl 
CreateFile = openpyxl.load_workbook(filename= 'excelworkbook.xlsx') 
Sheet = CreateFile.active 
Sheet['A1']=('What Ever You Want to Type') 
CreateFile.save('excelworkbook.xlsx') 

Это мой самый простой пример.

+0

Nice, минимальный рабочий пример. Просто отметьте: условно иметь имена переменных во всех нижних регистрах. TitleCase зарезервирован для определений классов. См. PEP 8: https://www.python.org/dev/peps/pep-0008/#method-names-and-instance-variables – Ogaday

Смежные вопросы