2016-05-02 4 views

Antwort

2

ws.cell() können nur einzelne Zellen so Bereiche zurückkehren für sie keinen Sinn machen. Um auf eine Reihe von Zellen zuzugreifen, können Sie ws.iter_rows() oder oder ws.columns verwenden. Bis einschließlich Version 2.3 ws.iter_rows() akzeptiert nur die Excel-artige Bereichsnotation, aber Sie können Zeilen- und Spaltenoffsets verwenden, um einen Bereich zu erstellen. Ab Version 2.4 können Sie für min_row, min_col, max_row und max_col vollständig numerische (1-basierte Indexierung) Werte bereitstellen.

+0

Einzelzellenzugriffs Beispiel für A1: 'ws .cell (Zeile = 1, Spalte = 1) .value = 'test'' – Aralox

4

Sind Sie sicher worksheet.cell(range="A1:J1").value ist möglich?

Die oben kann möglich sein, mit range Funktion in der offiziellen Dokumentation als gegeben:

http://openpyxl.readthedocs.io/en/default/api/openpyxl.worksheet.worksheet.html

Es gibt 2 Möglichkeiten worksheet.cell zu verwenden:

Verbrauch: Zelle (COODINATE = 'A15') oder Zelle (Zeile = 15, Spalte = 1)

Wenn keine Koordinaten angegeben sind, müssen Zeile und Spalte angegeben werden.

So können Sie eine Liste Verständnis verwenden:

data = [worksheet.cell(row=1,column=i).value for i in range(1,11)] 
0

Es scheint so, als ob Sie einen Bereich in Zeilen aufteilen und die Zellenwerte jeder Zeile in einem Tupel oder einer Liste speichern möchten. Es gibt zwei Methoden, die für diese saubere und leicht sind:

Annahmen:

ws: Arbeitsblatt zum Beispiel ws=wb['Sheet1']

rng: jeder Bereich in WS z. rng=ws['A1':'D10'] oder rng=ws['A1':'D' + str(ws.max_column)]

Methode 1:

t=tuple(rng)

dies wird ein Tupel zurückgeben, die Tupeln jeder Reihe enthält. In diesem Beispiel hat t also 10 Tupel und jedes innere Tupel hat 4 Elemente/Werte.

Methode 2:

final_list=[] 
for row in rng: 
    mylist=list(row) 
    final_list.append(mylist) 

dies so ziemlich das gleiche, außer anstelle von Tupeln, die Sie Listen haben würde.

HINWEIS:

Liste von Listen oder Tupel von Tupeln speichert cells und ihre Werte nicht, so dass ihr Wert zuzugreifen dies zu tun:

first_cell_value=t[0][0].value 
Verwandte Themen