ホームページ >バックエンド開発 >Python チュートリアル >Python はテーブルをどのように処理するのでしょうか?
Python はテーブルをどのように処理しますか?
Python でテーブルを処理する方法:
Python は主に Excel を操作するために xlrd と xlwt という 2 つのライブラリを使用します。つまり、xlrd は Excel を読み取るためのもので、 xlwt は Excel ライブラリを作成するためのものです。 https://pypi.python.org/pypi からダウンロードできます。以下は、Python の読み取りと Excel の書き込みをそれぞれ記録します。
Python で Excel を書く——xlwt
Python で Excel を書くときの難しさは、ワークブック自体の構築ではなく、データを入力することですが、これは範囲外です。 Excelの書き方にも厄介な問題があり、例えばセルを結合して書くのが面倒だったり、書き方が様々だったりします。
詳細なコードは次のとおりです:
import xlwt #设置表格样式 def set_style(name,height,bold=False): style = xlwt.XFStyle() font = xlwt.Font() font.name = name font.bold = bold font.color_index = 4 font.height = height style.font = font return style #写Excel def write_excel(): f = xlwt.Workbook() sheet1 = f.add_sheet('学生',cell_overwrite_ok=True) row0 = ["姓名","年龄","出生日期","爱好"] colum0 = ["张三","李四","恋习Python","小明","小红","无名"] sheet1.write(0,i,row0[i],set_style('Times New Roman',220,True)) #写第一列 for i in range(0,len(colum0)): sheet1.write(i+1,0,colum0[i],set_style('Times New Roman',220,True)) sheet1.write(1,3,'2006/12/12') sheet1.write_merge(6,6,1,3,'未知')#合并行单元格 sheet1.write_merge(1,2,3,3,'打游戏')#合并列单元格 sheet1.write_merge(4,5,3,3,'打篮球') f.save('test.xls') if __name__ == '__main__': write_excel()
結果図:
ここで、write_merge() の使用法を簡単に説明します。 , 前述のように、:sheet1.write_merge(1,2,3,3,'playing games')、つまり 4 つの列の 2 列目と 3 列目を結合します。結合されたセルの内容は「合計」で、スタイルが設定されています。このうちパラメータはすべて0から計算されます。
Python は Excel を読み取ります - xlrd
Python は Excel テーブルを読み取ります。xlwt と比較して、xlrd はより多くのインターフェイスを提供しますが、このプロセスには、日付の読み取り、結合されたセルの内容の読み取りなど、いくつかの問題もあります。
基本的な操作を見てみましょう:
全体的な考え方は、ファイルを開き、テーブルを選択し、行と列を読み取り、テーブル内のデータを読み取ります。
詳細なコードは次のとおりです。
import xlrd from datetime import date,datetime file = 'test3.xlsx' def read_excel(): wb = xlrd.open_workbook(filename=file)#打开文件 print(wb.sheet_names())#获取所有表格名字 sheet1 = wb.sheet_by_index(0)#通过索引获取表格 sheet2 = wb.sheet_by_name('年级')#通过名字获取表格 print(sheet1,sheet2) print(sheet1.name,sheet1.nrows,sheet1.ncols) rows = sheet1.row_values(2)#获取行内容 cols = sheet1.col_values(3)#获取列内容 print(rows) print(cols) print(sheet1.cell(1,0).value)#获取表格里的内容,三种方式 print(sheet1.cell_value(1,0)) print(sheet1.row(1)[0].value)
実行結果は次のとおりです。
次に、上記の実行結果では、赤いボックスのフィールドは明らかに生年月日であり、表示できる実際の浮動小数点数であると同時に、結合されたセルにはコンテンツがあるはずであり、結果は表示できません。空っぽになってください。
心配しないで、これら 2 つの問題を 1 つずつ解決しましょう:
1. Python が Excel のセルの内容を日付として読み取る方法
Python が Excel を読み取るには 5 つあります。返されるセル内容のタイプ、つまり上記の例では ctype:
ctype: 0 空、1 文字列、2 数値、3 日付、4 ブール値、5 エラー
これは日付の ctype です。 =3. この場合、xlrd の xldate_as_tuple を使用して日付形式に処理する必要があり、テーブルの ctype=3 が決定された場合にのみ、xldate は操作を開始できます。
詳細なコードは次のとおりです:
import xlrd from datetime import date,datetime print(sheet1.cell(1,2).ctype) date_value = xlrd.xldate_as_tuple(sheet1.cell_value(1,2),wb.datemode) print(date_value) print(date(*date_value[:3])) print(date(*date_value[:3]).strftime('%Y/%m/%d'))
2. 結合されたセルの内容を取得します
操作する前に、merged_cells( ) 使用法、merged_cells によって返される 4 つのパラメーターの意味は次のとおりです: (row、row_range、col、col_range)。ここで、[row, row_range] には row が含まれますが、row_range は含まれません。同じことが、col にも当てはまります。つまり、( 1, 3, 4, 5) (7, 8, 2, 5) の意味は次のとおりです: 行 1 から 2 (3 を除く) をマージします。 (7, 8, 2, 5) の意味は次のとおりです: 列 2 をマージします。 4まで。
詳細なコードは次のとおりです:
print(sheet1.merged_cells)print(sheet1.cell_value(1,3)) print(sheet1.cell_value(4,3)) print(sheet1.cell_value(6,1))
パターンは見つかりましたか?はい、merge_cells によって返される行と列の低いインデックスを取得するだけです。したがって、次のようにバッチで取得できます。
詳細なコードは次のとおりです。
merge = [] print(sheet1.merged_cells) for (rlow,rhigh,clow,chigh) in sheet1.merged_cells: merge.append([rlow,clow]) for index in merge: print(sheet1.cell_value(index[0],index[1]))
実行結果は、次のとおり、上の図と同じです。
推奨チュートリアル: 《
python以上がPython はテーブルをどのように処理するのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。