python3処理Excelファイルの詳細な説明

最近の作業では、APPオンラインエンドユーザー、、、をカウントし、プロジェクトチームに報告するExcelテーブルを生成する必要が手机品牌あり手机型号ます对应型号的用户量オンラインの携帯電話のブランドとモデルの数が多すぎて、手動操作に時間がかかりすぎるため、必要なテーブルを生成するためにpython3スクリプトが作成されます。

python3でExcelを操作するには、まず、使用可能な依存関係ライブラリを見つけることです。インターネット上でpython3依存関係ライブラリの長所と短所の比較表を見つけました。Excel処理に関連する依存関係パッケージの長所と短所の比較

私が選択する依存ライブラリはopenpyxl、私のニーズが次のとおりであるためです。

  • xlsx新しいバージョンのExcelファイルを読み書きできます。
  • 大きなファイルの読み取りと書き込みに直面して:速度は十分に速いです。
  • 読み取りと書き込みxlsxに加えて、次の機能があります。

行の高さ、列の幅、テキストサイズ、表の境界線、セルの結合などを設定します。

のような他の依存ライブラリをxlrd試したので、この記事では、研究ノートとして、とのAPIの使用法を紹介しopenpyxlます。xlrd

  • python3はopenpyxl操作xlsxフォームを使用します。
  • python3はxlrd操作xlsフォームを使用します。

1. openpyxl

python3使用openpyxl操作xlsxに関連するコードスニペットの概要は次のとおりです。

  • openpyxl読み取りxlsxファイルを使用します。
  • openpyxl書き込みxlsxファイルを使用します。

1.1xlsxファイルを読み取る

  • ファイルを開きExcelページを読みます。xlsxsheet
import openpyxl  # 导入模块openpyxl

# 打开Excel表格
excel = openpyxl.load_workbook('refer/品牌型号映射表.xlsx')
# 获取指定Sheet表单页
sheet = refer_excel['品牌型号对应关系']
复制代码
  • コンテンツの読み取り单元格cell:最初の行と最初の列のセルコンテンツを読み取ります。
import openpyxl  # 导入模块openpyxl

# 读取第一行第一列的单元格内容
cell_value = (sheet.cell(row=1, column=1)).value
复制代码

Excelの実行可能なコード例を読む:

使用 openpyxl 读取Excelxlsx文件,举例代码如下:

这里要读取的举例Excel表格如下: 読むExcelシート

代码举例如下:

import openpyxl  # 导入模块openpyxl


def get_brand_model_dict_from_refer():
    """ 读取xlsx文件,获取xlsx文件中"品牌"、"型号"映射字典
    """
    # 打开Excel表格
    refer_excel = openpyxl.load_workbook('refer/品牌型号映射表.xlsx')
    # 获取指定Sheet表单页
    refer_sheet = refer_excel['品牌型号对应关系']
    # 创建字典:创建一个以型号为key,以品牌为value的字典
    brand_model_dict = {}
    # 行循环:从第二行开始循环,到最后一行截止
    for row in range(2, refer_sheet.max_row + 1):
        # 读取cell单元格中的数据
        brand = (refer_sheet.cell(row=row, column=1)).value  # 品牌
        model = (refer_sheet.cell(row=row, column=2)).value  # 型号
        # 以型号为key 以品牌为value
        brand_model_dict[model] = brand
    print("return brand_model_dict: ", brand_model_dict)
    return brand_model_dict


# ~~~~~~~~~~~~~~~~main~~~~~~~~~~~~~~~~~~
# 读取对应关系表格:
get_brand_model_dict_from_refer()

复制代码

1.2 写 xlsx 文件

  • 新建Excel创建Sheet页:
# 创建输出表格Excel:创建工作表  
excel = openpyxl.Workbook()  
# 创建sheet页:以demo为名字创建一个sheet页  
sheet = excel.create_sheet('demo_sheet', 0)
复制代码
  • 设置Excel中表格的行高
# 第一行的行高
sheet.row_dimensions[1].height = 22
复制代码
  • 设置Excel中表格的列宽
# 设置A列的列宽
sheet.column_dimensions['A'].width = 25
复制代码
  • 单元格赋值
# 第一行第一列的单元格  
cell11 = sheet.cell(row=1, column=1)
# 单元格赋值
cell11.value = "demo table title" 
复制代码
  • 单元格内容居中对齐
# 居中对齐
cell11.alignment = openpyxl.styles.Alignment(horizontal='center', vertical='center')  
复制代码
  • 合并单元格
# 合并单元格:合并第一行,1~3列的单元格  
sheet.merge_cells(start_row=1, start_column=1, end_row=1, end_column=3)
复制代码
  • 保存Excel到指定目录:
# 保存excel文件 
excel.save('output/demo_excel.xlsx')
复制代码

完整的代码实现举例:

import os  # 文件相关判断会用到
import openpyxl  # 导入模块openpyxl

#
# ~~~~~~~~写~~~~~~~~
# 创建输出表格Excel:创建工作表
output_excel = openpyxl.Workbook()
# 创建sheet页:以demo为名字创建一个sheet页
output_sheet = output_excel.create_sheet('demo_sheet', 0)
#
# 行高:第一行行高 22
output_sheet.row_dimensions[1].height = 22
# 列宽:列宽 25 (A、B、C) 三列宽度为 25
column_width_list = ['A', 'B', 'C']
for columnKey in column_width_list:
    output_sheet.column_dimensions[columnKey].width = 25
#
# 设置第一行显示内容:第一行为表格的标题,需合并单元格
cell11 = output_sheet.cell(row=1, column=1)  # 第一行第一列的单元格
cell11.value = "demo table title"  # 单元格赋值
cell11.alignment = openpyxl.styles.Alignment(horizontal='center', vertical='center')  # 居中对齐
# 合并单元格
output_sheet.merge_cells(start_row=1, start_column=1, end_row=1, end_column=3)
#
# 设置第二行显示内容:第二行为 品牌、型号、数量
md_cell21 = output_sheet.cell(row=2, column=1)  # 单元格
md_cell21.value = '品牌'  # 赋值
md_cell21.alignment = openpyxl.styles.Alignment(horizontal='center', vertical='center')  # 居中
md_cell21 = output_sheet.cell(row=2, column=2)  # 单元格
md_cell21.value = '型号'  # 赋值
md_cell21.alignment = openpyxl.styles.Alignment(horizontal='center', vertical='center')  # 居中
md_cell21 = output_sheet.cell(row=2, column=3)  # 单元格
md_cell21.value = '数量'  # 赋值
md_cell21.alignment = openpyxl.styles.Alignment(horizontal='center', vertical='center')  # 居中
# 保存表格
# 如果存在已有的输出文件:则删除文件
if os.path.exists('output/demo_excel.xlsx'):
    os.remove('output/demo_excel.xlsx')
# 保存输出文件
output_excel.save('output/demo_excel.xlsx')
复制代码

生成的Excel文件如图所示: 生成されたExcelファイルを図に示します。

二、xlrd

这里对 python3 使用 xlrd操作xls的相关代码片段做如下总结:

  • 使用 xlrd 读取 xls 文件;
  • 使用 xlutils.copyxls 文件;

2.1 读 xls 文件

  • 打开Excelxls文件,并读取sheet页:
import xlrd  # 读取excel

# 打开Excel表格
excel = xlrd.open_workbook('input/品牌型号映射表.xls')
# 获取指定Sheet表单页
sheet = excel.sheet_by_index(0)
复制代码
  • 读取单元格cell内容:读取第一行第一列的单元格内容;
import xlrd  # 读取excel

# 读取第一行第一列的单元格内容
value = sheet.cell_value(0, 0)  # 品牌
复制代码

读取 Excel 可运行代码举例:

使用 xlrd 读取Excelxls文件,举例代码如下:

这里要读取的举例Excel表格如下: 読むExcelシート

代码举例如下:

import xlrd # 读取excel


def get_brand_model_dict_from_refer():
    """ 读取xlsx文件,获取xlsx文件中"品牌"、"型号"映射字典
    """
    # 打开Excel表格
    excel = xlrd.open_workbook('input/品牌型号映射表.xls')
    # 获取指定Sheet表单页
    sheet = excel.sheet_by_index(0)
    # 创建字典:创建一个以型号为key,以品牌为value的字典
    brand_model_dict = {}
    # 行循环:从第二行开始循环,到最后一行截止
    for row in range(1, sheet.nrows):
        # 读取cell单元格中的数据
        brand = sheet.cell_value(row, 0)  # 品牌
        model = sheet.cell_value(row, 1)  # 型号
        # 以型号为key 以品牌为value
        brand_model_dict[model] = brand
    print("return brand_model_dict: ", brand_model_dict)
    return brand_model_dict


# ~~~~~~~~~~~~~~~~main~~~~~~~~~~~~~~~~~~
# 读取对应关系表格:
get_brand_model_dict_from_refer()


复制代码

2.2 使用 xlutils.copy 写 xls 文件

因 xlrd 无更改Excel的功能,这里使用 xlutils.copy 创建一个新的Excel。

  • 创建Excel
# 因 xlrd 无更改Excel的功能,这里使用 xlutils.copy 创建一个新的Excel  
excel = copy(input_excel)  
sheet = output_excel.get_sheet(0)
复制代码
  • 单元格赋值
# 为单元格赋值  
sheet.write(row, column, cell_value)
复制代码

使用 xlutils.copy 写 Excel 可运行代码举例:

import xlrd  # 读取excel  
# 导入copy模块  
from xlutils.copy import copy  
  
#  
# ~~~~~~~~读~~~~~~~~  
# 打开Excel表格  
input_excel = xlrd.open_workbook('input/品牌型号映射表.xls')  
# 获取指定Sheet表单页  
input_sheet = input_excel.sheet_by_index(0)  
#  
# ~~~~~~~~写~~~~~~~~  
# 因 xlrd 无更改Excel的功能,这里使用 xlutils.copy 创建一个新的Excel  
output_excel = copy(input_excel)  
output_sheet = output_excel.get_sheet(0)  
# 行循环(参考文件)  
for row in range(input_sheet.nrows):  
    # 忽略第0行  
 if row == 0:  
        output_sheet.write(row, 2, '行号')  
    else:  
        # 修改:第row行 第2列的内容  
 output_sheet.write(row, 2, row)  
# 保存更改后的文件  
output_excel.save('output/demo_excel.xls')
复制代码

生成されたExcelファイルを図に示します。

三、源码下载

给出源码之前,先说一下我的编译器环境:

  • 环境:python 3.8
  • 编译器:PyCharm

源码下载:

Python3使用openpyxl、xlrd依赖库操作Excel案例源码: download.csdn.net/download/ai…

Python3使用xlrd修改Excel数据映射关系: download.csdn.net/download/ai…

参考:

Excelファイルを読み書きするPython開発用のPython3: blog.csdn.net/u014597198/…

=終わり=

この記事は、最初に公開アカウント「CODING Technology Museum」で公開されました。記事がお役に立てば、私の公開アカウントに注意してください。

おすすめ

転載: juejin.im/post/7086695700154548254