ホームページ  >  記事  >  バックエンド開発  >  Python はテーブルをどのように処理するのでしょうか?

Python はテーブルをどのように処理するのでしょうか?

coldplay.xixi
coldplay.xixiオリジナル
2020-06-10 15:37:597230ブラウズ

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()

結果図:

Python はテーブルをどのように処理するのでしょうか?

ここで、write_merge() の使用法を簡単に説明します。 , 前述のように、:sheet1.write_merge(1,2,3,3,'playing games')、つまり 4 つの列の 2 列目と 3 列目を結合します。結合されたセルの内容は「合計」で、スタイルが設定されています。このうちパラメータはすべて0から計算されます。

Python は Excel を読み取ります - xlrd

Python は Excel テーブルを読み取ります。xlwt と比較して、xlrd はより多くのインターフェイスを提供しますが、このプロセスには、日付の読み取り、結合されたセルの内容の読み取りなど、いくつかの問題もあります。

基本的な操作を見てみましょう:

Python はテーブルをどのように処理するのでしょうか?

全体的な考え方は、ファイルを開き、テーブルを選択し、行と列を読み取り、テーブル内のデータを読み取ります。

詳細なコードは次のとおりです。

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)

実行結果は次のとおりです。

Python はテーブルをどのように処理するのでしょうか?

次に、上記の実行結果では、赤いボックスのフィールドは明らかに生年月日であり、表示できる実際の浮動小数点数であると同時に、結合されたセルにはコンテンツがあるはずであり、結果は表示できません。空っぽになってください。

心配しないで、これら 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'))

Python はテーブルをどのように処理するのでしょうか?

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))

Python はテーブルをどのように処理するのでしょうか?

パターンは見つかりましたか?はい、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

以上がPython はテーブルをどのように処理するのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。