PythonでEXCELファイルを読み書きするための一般的な方法の百科事典

PythonでExcelを読み書きするには多くの方法があり、モジュールごとに読み取りと書き込みの方法が少し異なります。ここでは、主にいくつかの一般的に使用される方法を紹介します。

  • xlrdとxlwtを使用してExcelの読み取りと書き込みを行います。
  • openpyxlを使用してExcelの読み取りと書き込みを行います。
  • パンダを使用してExcelの読み取りと書き込みを行います。
    参照:

多くの人がPythonを学び、どこから始めればよいのかわかりません。
多くの人がPythonを学び、基本的な文法を習得した後、どこから始めればよいかわかりません。
事例研究を行った多くの人々は、より高度な知識を学ぶ方法を知りません。
これらの3つのタイプの人々のために、私はあなたに優れた学習プラットフォームを提供し、ビデオチュートリアル、電子書籍、およびコースのソースコードを無料で受け取ることができます!??
¤QQグループ:232030553

https://www.python-excel.org/
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_excel.html#pandas.read_excel
https: //www.jianshu.com/p/19219542bf23

2 | 0データの準備

デモンストレーションを容易にするために、ここで新しいdata.xlsファイルとdata.xlsxファイルを作成しました。最初のワークシートsheet1領域「A1:E5」の内容は次のとおりです。Excelの読み取りと書き込みのコードをテストするために使用されます。

 

3 | 0 xlrdとxlwt

xlrdは、.xls形式のExcelファイルからデータを読み取って情報をフォーマットするためのライブラリです。xlwtは、
古いExcelファイル(例:.xls)にデータ書き込んで情報をフォーマットするためのライブラリです

3 | 1

pip install xlrd
pip install xlwt

 


ファイルの内容を読み始めます

import xlrd
import os

file_path = os.path.dirname(os.path.abspath(__file__))
base_path = os.path.join(file_path, 'data.xlsx')
book = xlrd.open_workbook(base_path)
sheet1 = book.sheets()[0]
nrows = sheet1.nrows
print('表格总行数', nrows)
ncols = sheet1.ncols
print('表格总列数', ncols)
row3_values = sheet1.row_values(2)
print('第3行值', row3_values)
col3_values = sheet1.col_values(2)
print('第3列值', col3_values)
cell_3_3 = sheet1.cell(2, 2).value
print('第3行第3列的单元格的值:', cell_3_3)

 


次に、書きましょう。実行できる操作が多すぎます。ここでは、一般的に使用される操作のみをリストします。

import xlwt
import datetime
# 创建一个workbook 设置编码
workbook = xlwt.Workbook(encoding='utf-8')
# 创建一个worksheet
worksheet = workbook.add_sheet('Worksheet')
# 写入excel参数对应 行, 列, 值
worksheet.write(0, 0, label='测试')
# 设置单元格宽度
worksheet.col(0).width = 3333

# 设置单元格高度
tall_style = xlwt.easyxf('font:height 520;')
worksheet.row(0).set_style(tall_style)

# 设置对齐方式
alignment = xlwt.Alignment()  # Create Alignment
# May be: HORZ_GENERAL, HORZ_LEFT, HORZ_CENTER, HORZ_RIGHT, HORZ_FILLED, HORZ_JUSTIFIED, HORZ_CENTER_ACROSS_SEL, HORZ_DISTRIBUTED
alignment.horz = xlwt.Alignment.HORZ_CENTER
# May be: VERT_TOP, VERT_CENTER, VERT_BOTTOM, VERT_JUSTIFIED, VERT_DISTRIBUTED
alignment.vert = xlwt.Alignment.VERT_CENTER
style = xlwt.XFStyle()  # Create Style
style.alignment = alignment  # Add Alignment to Style
worksheet.write(2, 0, '居中', style)

# 写入带颜色背景的数据
pattern = xlwt.Pattern()  # Create the Pattern
# May be: NO_PATTERN, SOLID_PATTERN, or 0x00 through 0x12
pattern.pattern = xlwt.Pattern.SOLID_PATTERN
pattern.pattern_fore_colour = 5  # May be: 8 through 63. 0 = Black, 1 = White, 2 = Red, 3 = Green, 4 = Blue, 5 = Yellow, 6 = Magenta, 7 = Cyan, 16 = Maroon, 17 = Dark Green, 18 = Dark Blue, 19 = Dark Yellow , almost brown), 20 = Dark Magenta, 21 = Teal, 22 = Light Gray, 23 = Dark Gray, the list goes on...
style = xlwt.XFStyle()  # Create the Pattern
style.pattern = pattern  # Add Pattern to Style
worksheet.write(0, 1, '颜色', style)

# 写入日期
style = xlwt.XFStyle()
# Other options: D-MMM-YY, D-MMM, MMM-YY, h:mm, h:mm:ss, h:mm, h:mm:ss, M/D/YY h:mm, mm:ss, [h]:mm:ss, mm:ss.0
style.num_format_str = 'M/D/YY'
worksheet.write(0, 2, datetime.datetime.now(), style)

# 写入公式
worksheet.write(0, 3, 5)  # Outputs 5
worksheet.write(0, 4, 2)  # Outputs 2
# Should output "10" (A1[5] * A2[2])
worksheet.write(1, 3, xlwt.Formula('D1*E1'))
# Should output "7" (A1[5] + A2[2])
worksheet.write(1, 4, xlwt.Formula('SUM(D1,E1)'))

# 写入超链接
worksheet.write(1, 0, xlwt.Formula('HYPERLINK("http://www.baidu.com";"百度一下")'))
# 保存
workbook.save('Excel_test.xls')

現在のパスのコマンドラインから実行するのが最善であることに注意してください。そうしないと、ファイルを生成できません。

 

 

4 | 0 openpyxl

openpyxlは、Excel 2010 xlsx / xlsm / xltx / xltmファイルを読み書きするためのPythonライブラリです。
インストールパッケージ

pip install openpyx

インストール後、データの読み取りを開始できます

import openpyxl
import os
file_path = os.path.dirname(os.path.abspath(__file__))
base_path = os.path.join(file_path, 'data.xlsx')
workbook = openpyxl.load_workbook(base_path)
worksheet = workbook.get_sheet_by_name('Sheet1')
row3=[item.value for item in list(worksheet.rows)[2]]
print('第3行值',row3)
col3=[item.value for item in list(worksheet.columns)[2]]
print('第3行值',col3)
cell_2_3=worksheet.cell(row=2,column=3).value
print('第2行第3列值',cell_2_3)
max_row=worksheet.max_row
print('最大行',max_row)

 


それでは、データの書き込みを始めましょう

import zipfile  
# 创建文件句柄  
file = zipfile.ZipFile("测试.zip", 'r')  
# 提取压缩文件中的内容,注意密码必须是bytes格式,path表示提取到哪  
file.extractall(path='.', pwd='123'.encode('utf-8')) 

 

 

5 | 0パンダ

pandasは、ローカルファイルシステムまたはURLから読み取るためのxls、xlsx、xlsm、xlsb、odf、ods、およびodtファイル拡張子をサポートしています。単一のワークシートまたはワークシートのリストを読み取るオプションをサポートします。
最初はまだインストールパッケージです

pip install pandas

语法:
pd.read_excel(io、sheet_name = 0、header = 0、names = None、index_col = None、usecols = None、squeeze = False、dtype = None、engine = None、converters = None、true_values = None、false_values =なし、skiprows = None、nrows = None、na_values = None、parse_dates = False、date_parser = None、1000s = None、comment = None、skipfooter = 0、convert_float = True、** kwds)

  • io、Excelのストレージパス
  • sheet_name、読み取るワークシートの名前
  • ヘッダー、列名として使用する行
  • 名前、最終的な列名をカスタマイズします
  • index_col、インデックスとして使用される列
  • usecols、どの列を読み取る必要があるか
  • データに列が1つしかない場合は、スクイーズします
  • コンバーター、必須の列データ型
  • skiprows、特定の行をスキップ
  • nrows、読み取られる行数
  • skipfooter、最後のn行をスキップします
import pandas as pd 
import os

file_path = os.path.dirname(os.path.abspath(__file__))
base_path = os.path.join(file_path, 'data.xlsx')
df = pd.read_excel(base_path)
print(df)

 



入数
データ语法:DataFrame.to_excel(excel_writer、sheet_name = 'Sheet1'、na_rep = ''、float_format = None、columns = None、header = True、index = True、index_label = None、startrow = 0、startcol = 0、 engine = None、merge_cells = True、encoding = None、inf_rep = 'inf'、verbose = True、freeze_panes = None)
参数説明:

  • excel_writer:ファイルパスまたは既存のExcelWriter
  • sheet_name:データファイルを含むワークシートの名前
  • na_rep:欠測データ表現
  • float_format:浮動小数点数の文字列をフォーマットします。たとえば、float_format = "%。2f"の形式は0.1234〜0.12です。
  • 列:列
  • ヘッダー:列名を書き出します。文字列のリストが指定されている場合、それは列名のエイリアスであると見なされます。
  • インデックス:行名を書き込む(インデックス)
  • index_label:必要に応じて、インデックス列の列ラベル。指定されておらず、ヘッダーとインデックスがtrueの場合、インデックス名が使用されます。DataFrameが複数のインデックスを使用する場合は、シーケンスを指定する必要があります。
  • startrow:左上隅のセル行がデータフレームをダンプします。
  • startcol:左上のセル列にデータフレームをダンプします。
  • engine:使用するエンジン「openpyxl」または「xlsxwriter」を記述します。オプションio.excel.xlsx.writer、io.excel.xls.writer、およびio.excel.xlsm.writerを使用して設定することもできます。
  • merge_cells:複数のインデックス行と階層行をマージされたセルに書き込みます。
  • エンコーディング:生成されたExcelファイルをエンコードします。xlwtにのみ必要であり、他のライターはユニコードをサポートしています。
  • inf_rep:無限大を表します。
  • 詳細:エラーログに詳細情報を表示します。
  • Freeze_panes:凍結する一番下の行と右の列を指定します
from pandas import DataFrame

data = {'name': ['张三', '李四', '王五'],'age': [11, 12, 13],'sex': ['男', '女', '男']}

df = DataFrame(data)

df.to_excel('file.xlsx')

 

おすすめ

転載: blog.csdn.net/Python_sn/article/details/111553321