2013-10-02 4 views
0

openpyxl을 사용하여 Excel 스프레드 시트에 데이터를 추가하는 방법을 알아 내려고했지만 개별 Excel 셀에 값을 쓰지 못했습니다. 내가하고 싶은 건 루프의 인쇄 결과를 Excel의 처음 네 줄에 저장하고 fundamental_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 모듈에 대한 정보가 있으면 파이썬 콘솔을 열 수 있습니다 :

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

작고 간단한 예제. 참고 : 모든 소문자에서 변수 이름을 사용하는 것이 일반적입니다. TitleCase는 클래스 정의 용으로 예약되어 있습니다. PEP 8 참조 : https://www.python.org/dev/peps/pep-0008/#method-names-and-instance-variables – Ogaday

관련 문제