2015-02-11 14 views
0

我一直在試圖找到一個很好的xlwings所需的語法資源,並已成功。我正在嘗試製作一個程序,該程序將重複n行數據並將某些信息輸出到新工作表。這是算法的一個片段。如果你能指點我一個很好的參考或者只是伸出援手,我會很感激。xlwings語法的n行和特定列與輸出到新工作表

data = number of rows in worksheet #either input the number manually or automate 

for row n to data: #start at row 1 and loop through each line of data 

    axles = get row n, column M data #retrieve data in column M 
    if axles<2: #Test the data from column M for validity 
     continue #return to the for loop and start on next line 

    distance = get row n, column Q data #retrieve data in column Q 
    if distance < 100 or distance > 300: #test the data from column Q for validity 
     continue #return to the for loop and start on next line 

    weight = get row n, column P data #retrieve data in column P 
    print weight into row n, column A on sheet 2 #display output on a new sheet 

回答

0

xlwings是一個非常酷的excel界面,Range對象將爲您的應用程序進行繁重的工作。根據您的列是否全部都可以,您可以使用tablevertical方法全部一起閱讀或逐列閱讀。以下是在Excel中一組簡單的數據的兩個等價的方法:

axles distance weight 
1  150   1.5 
2  200   2 
1  250   2.5 
2  300   3 
4  350   3.5 

的Python代碼是:

from xlwings import Workbook, Range 

wb=Workbook(r'C:\\Full\\Path\\to\\Book1.xlsx') 

# Method 1: 
# if your table is all together read it in at once: 
# read all data in as table 
allrows=Range('Sheet1','A2').table.value 
for rownum, row in enumerate(allrows): 
    axles=row[0] 
    if axles<2: 
     continue 
    distance=row[1] 
    if distance< 100 or distance>300: 
     continue 
    weight = row[2] 
    # +2 to correct for python indexing and header row 
    Range('Sheet2',(rownum+2,1)).value=weight 

# Method 2: 
# if your columns are separated read them individually: 
# read all data in as columns 
axles=Range('Sheet1','A2').vertical.value 
distance=Range('Sheet1','B2').vertical.value 
weight=Range('Sheet1','C2').vertical.value 
# in case the columns have different lengths, look at the shortest one 
for rownum in range(min(len(axles),len(distance),len(weight))): 
    if axles[rownum]<2: 
     continue 
    if distance[rownum]< 100 or distance[rownum]>300: 
     continue 
    # +2 to correct for python indexing and header row 
    Range('Sheet2',(rownum+2,1)).value=weight[rownum] 

在任一情況下,第二和第四數據點將被寫入到第2頁上的與第1頁相同的行

相關問題