0

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
4

2 に答える 2

1

xlwings は優れた非常に優れたインターフェイスです。このRangeオブジェクトは、アプリケーションの重労働を処理します。列がすべて一緒であるかどうかに応じて、tableまたはverticalメソッドのいずれかを使用して、すべてをまとめて、または列ごとに読み取ることができます。Excel の単純なデータ セットに対する 2 つの同等のアプローチを次に示します。

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 番目と 4 番目のデータ ポイントは、シート 1 と同じ行でシート 2 に書き込まれます。

于 2015-04-04T16:00:52.043 に答える
-1

xlwingsPythonプログラミング言語のパッケージです。Python を学習するには、次のような公式サイトから始めることができます: https://www.python.org/about/gettingstarted/

于 2015-02-12T10:46:40.717 に答える