個々のセルへのアクセス
WS = C [ ' A4 ' ] #は、細胞が存在しない場合、セルA4を返し、それが自動的に作成された WS [ ' A4 ' ] 4 = #はセルA4が割り当てられている。4 D = ws.cell(行= 4、 = 2列、値= 10) #セル10に割り当てられB4へ
メモリ内に作成したワークシートは、任意のセルが含まれていない場合は、最初の訪問が作成されるときにのみ
、これらの細胞がまだ割り当てられていないが、関数は、セル()を介した細胞を大量にアクセスするときこれらの細胞は、既にメモリ内に作成します
以下のために X における範囲(1,101 :) 用 Y における範囲(1,101 ): ws.cell(行 = X、Y =列)#は、メモリ内の100×100の細胞を作成します
複数のセルへのアクセス
CELL_RANGE = WS [ ' A1 ':' C2 ' ] #のすべてのセルのC2にA1からアクセス COLC = WS [ ' C ' ] #のアクセス列Cのすべてのセルが = WS [col_range ' C:D ' ] #のアクセス全ての列C内のセルと行Dの row10 = WS [10] #行10のアクセスの全てのセル row_rangeのWS = [5:10] #のセルの全てのライン10へのアクセスライン5 位Worksheet.iter_rowsを使用動作ユニットに()メソッドは、複数のセルを横断 するための行に ws.iter_rows(min_row = 1、max_col = 3、MAX_ROW = 2。。 ) のために細胞内行: プリント(セル) '' ' 输出: <セルSheet1.A1> <セルSheet1.B1> <セルSheet1.C1> <セルSheet1.A2> <セルSheet1.B2> <セルSheet1.C2> ''' #使用Worksheet.iter_cols()方法以列为单位、遍历多个单元格 用 COL に ws.iter_cols(min_row = 1、max_col = 3、max_row = 2 ) のためのセルにおけるCOL: プリント(セル )''」 输出: <セルSheet1.A1> <セルSheet1.A2> <セルSheet1.B1> <セルSheet1.B2> <セルSheet1.C1> <セルSheet1.C2> ''」
パフォーマンス上の理由から、読み取り専用モードでWorksheet.iter_cols()が利用できない
私は、メモリのサイズは、ファイルが億行を持っている場合は、事前に予測することはできないため、ファイルのサイズに制限されているので、これはかもしれないと思いますデータは
ユニットとしてファイルを横断する時iter_cols方法であり、最初の列を横断する最初は、第千万の行を横断することができる、メモリは、もはや十分ではありません
バルクアクセスセル
WS [ ' C9 ' ] = ' Hello Worldの' タプル(ws.rows) #获取A1到C9的所有单元格、以行为单位 ''」 输出: ((< セルSheet.A1>、<セルSheet.B1> <細胞Sheet.C1>) (<セルSheet.A2>、<セルSheet.B2>、<セルSheet.C2>) (<セルSheet.A3>、<セルSheet.B3>、<細胞シート.C3>) (<セルSheet.A4>、<セルSheet.B4>、<セルSheet.C4>) (<セルSheet.A5>、<セルSheet.B5>、<セルSheet.C5>) 、 (<セルSheet.A6>、<セルSheet.B6>、<セルSheet.C6>) (<セルSheet.A7>、<セルSheet.B7>、<セルSheet.C7>) (<セルSheet.A8>、<セルSheet.B8>、<セルSheet.C8>)、 (<セルSheet.A9>、<セルSheet.B9>、<セル Sheet.C9>))''」 タプル(ws.columns) #获取A1到C9的所有单元格、以列为单位 ''」 输出: ((< セルSheet.A1>、 <セルSheet.A2>、 <セルSheet.A3>、 <セルSheet.A4>、 <セルSheet.A5>、 <セルSheet.A6>、 ... <セルSheet.B7>、 <セルSheet.B8>、 <セルSheet.B9>)、 (<セルSheet.C1 >、 <セルSheet.C2>、 <セルSheet.C3>、 <セルSheet.C4>、 <セルSheet.C5>、 <セルSheet.C6>、 <セルSheet.C7>、 <セルSheet.C8> 、 <セル Sheet.C9>))''」
パフォーマンス上の理由から、読み取り専用モードでWorksheet.columnsは使用できません。
セル値処理
細胞の値はセルのみを返すプロパティWorksheet.valuesを、使用することができ、のみ処理する場合、値
#この方法の反復だけセル値 のための行にws.values: のための値で行: プリント(値) #Worksheet.iter_rows()とWorksheet.iter_cols()メソッドは、セルパラメータの発展の方法によって取得することができるのみ値 のための行に ws.iter_rows(min_row = 1、max_col = 3、MAX_ROW = 2、values_only =。。TRUE): 印刷(行) '' ' 出力: (なし、なし、なし) (なし、なし、なし) ' ' "
データストレージ
WS = C [ ' A4 ' ] c.value = ' こんにちは、世界' #割り当てられたセルA4へ
ファイルを保存し
、保存()関数を使用して、最も簡単で安全な方法であります
WB = ワークブック() wb.save(' balances.xlsx ')
注意:
1)この方法で保存されたので注意され、警告なしに同じ名前の元のファイルを上書きします
拡張子2)ファイルがXLSXする必要がありますが、そうでない場合はしない、オープンオフィスにつながる可能性
ストリーミング保存
あなたは、このようなピラミッド、フラスコまたはジャンゴや他のアプリケーションを使用して、あなたは、単にNamedTemporaryFile()機能を提供することができるときのように、ストリームにファイルを保存した場合
以下からの一時ファイルのインポートNamedTemporaryFile から openpyxl インポートワークブック WB = ワークブック() TMP AS NamedTemporaryFile()を持つ: wb.save(tmp.name) tmp.seek(0) ストリーム = tmp.read() #の負荷文書、属性テンプレートを指定することにより、確かに、ワークブックをテンプレートとして保存することができます WB = load_workbook(「document.xlsx 」) wb.template = 真 wb.save(「document_template.xltx 」) #のプロパティを指定することで、負荷テンプレートファイル、テンプレートができ、Falseですワークブック文書を保存 (WB = load_workbook "document_template.xltx ' ) wb.template = Falseの wb.save(' document.xlsx "、偽as_template =)
あなたは監視する必要があり、文書データは、テンプレートに文書を保存、またはドキュメント内のテンプレートを保存するためには、拡張属性
そうでない場合、結果は、原稿台のエンジンを開けません。
次のような状況では、失敗した保存されます
load_workbook = WB(' document.xlsx ' ) wb.save(' new_document.xlsm ')#拡張XLSXとして保存する、またはExcelを開くことができない WB = load_workbook(' document.xlsm ' ) wb.save(' new_documentを。 XLSM 「)#は、そうでない場合はExcelが開くことができない、真=プロパティkeep_vbaを指定する必要が WB = load_workbook(」document.xltm 「keep_vba = 真) wb.save(」new_document.xlsm ")#を使用すると、テンプレートが必要な場合は、拡張子を指定する必要がありますある* .xltm
ロード・ファイル
また、ファイルを開くために)(openpyxl.load_workbookができ
openpyxl インポート load_workbookの#のload_workbookのインポートする負荷クラスファイル WB2 = load_workbook(' test.xlsx ' ) 印刷(wb2.sheetnames) #1 [ 'Sheet2の'、 '新:出力タイトル'、 'Sheet1の']、 ワークブックのワークシートの出力を名前