Excel テーブルの Python 操作

卡哇伊
卡哇伊オリジナル
2020-07-10 11:20:406825ブラウズ

Python を使用して Excel テーブルを作成する方法: まず、openpyxl モジュールを使用して Excel ドキュメントを開き、行と列のセル情報を指定し、次に [wb.sheetnames] と [wb.active] を呼び出します。ワークブックの詳細を取得します。最後に、インデックス読み取りを使用して Cell オブジェクトを取得します。

Excel テーブルの Python 操作

##1 Python と Excel のテーブル

Excel は、Windows 環境で人気のある強力なスプレッドシート アプリケーションです。 openpyxl モジュールを使用すると、Python プログラムで Excel スプレッドシート ファイルを読み取り、変更できるようになります。

1) Excel ドキュメントの基本定義
- ワークブック (ワークブック)
- ワークシート (シート)
- アクティブ シート (アクティブ シート)
- 行: 1、2、3、4、5、6……..
- 列: A、B、C、D……..
- セル (セル): B1、C1
2) Python には Excel テーブル操作用のモジュールが多数あります。ここでは openpyxl モジュールが選択されています
ただし、openpyxl モジュールをインストールする必要があります

pip install openpyxl

openpyxl モジュールをインストールするには、上記のコマンドを使用します

これは操作のために選択されたテーブルです


Excel テーブルの Python 操作1> Excel ドキュメントを開きます

import openpyxl# 1. 打开一个excel文档, 
class 'openpyxl.workbook.workbook.Workbook'实例化出来的对象wb = openpyxl.load_workbook('Book.xlsx')
print(wb, type(wb))# 获取当前工作薄里所有的工作表,和正在使用的表;print(wb.sheetnames)
print(wb.active)

Excel テーブルの Python 操作出力はオブジェクトです
2> ワークシートを選択します操作対象

# 2.选择要操作的工作表,返回工作表对象sheet=wb['Sheet1']
#获取工作表的名称print(sheet.title)

Excel テーブルの Python 操作3>指定した行、列のセル情報を指定

# 3. 返回指定行指定列的单元格信息print(sheet.cell(row=1, column=2).value)
cell = sheet['B1']print(cell)print(cell.row, cell.column, cell.value)

Excel テーブルの Python 操作4>行の最大値を取得し、ワークシートの列

# 4. 获取工作表中行和列的最大值print(sheet.max_column)print(sheet.max_row)
sheet.title = '学生信息'print(sheet.title)

Excel テーブルの Python 操作5> セルのすべての情報にアクセス

# 5. 访问单元格的所有信息print(sheet.rows)  
# 返回一个生成器, 包含文件的每一行内容, 可以通过便利访问.
# 循环遍历每一行for row in sheet.rows:    
# 循环遍历每一个单元格for cell in row:        
# 获取单元格的内容
   print(cell.value, end=',')
 print()

Excel テーブルの Python 操作6> 変更した情報を保存

#6.保存修改信息wb.save(filename='Boom.xlsx')

Excel テーブルの Python 操作 したがって、Excel テーブルの操作を詳しくまとめると、次のようになります:
1. openpyxl モジュールをインポートします。
2. openpyxl.load_workbook() 関数を呼び出します。
3. Workbook オブジェクトを取得します。
4. wb.sheetnames と wb.active を呼び出してワークブックの詳細を取得します。
5. Worksheet オブジェクトを取得します。
6. インデックスまたはワークシートの cell() メソッドを行および列のキーワード パラメーターとともに使用します。
7. Cell オブジェクトを取得します。
8. Cell オブジェクトの value 属性を読み取ります

2 Excel の簡単な例 - 関数 readwb(wbname,sheetname=None) を定義します
- ユーザーが指定した場合シート名 ユーザーが指定したワークシートを開きます。指定されていない場合は、アクティブなシートを開きます。
- 製品の価格に従って (小さいものから大きいものまで) 並べ替えてファイルに保存します。 製品名: 製品価格: 製品数量
- すべての情報を取得してデータベースに保存します

import osimport openpyxldef readwb(wbname, sheetname=None):
        # 打开工作薄
    wb = openpyxl.load_workbook(wbname)    # 获取要操作的工作表
    if not sheetname:
        sheet = wb.active    else:
        sheet = wb[sheetname]    # 获取商品信息保存到列表中
    #[ ['name', price, count]
    all_info = []    for row in sheet.rows:
        child = [cell.value for cell in row]
        all_info.append(child)    
        return sorted(all_info, key=lambda 
        item: item[1])def save_to_excel(data, wbname, sheetname='sheet1'):
    """
    将信息保存到excel表中;
    [[' BOOK', 50, 3], ['APPLE', 100, 1], ['BANANA', 200, 0.5]]
    """
    print("写入Excel[%s]中......." %(wbname))    #打开excel表, 如果文件不存在, 自己实例化一个WorkBook对象
    wb = openpyxl.Workbook()    # 修改当前工作表的名称
    sheet = wb.active    # 修改工作表的名称
    sheet.title = sheetname    for row, item in enumerate(data):  # 0 [' BOOK', 50, 3]
        for column, cellValue in enumerate(item): #  0 ' BOOK'
        sheet.cell(row=row+1, column=column+1, value=cellValue) # ** 往单元格写入内容
    # sheet.cell['B1'].value = "value"
    # sheet.cell(row=1, column=2, value="value")
    # 保存写入的信息
    wb.save(filename=wbname)
    print("写入成功!")
data = readwb(wbname='Book1.xlsx')
save_to_excel(data, wbname='Book2.xlsx', sheetname="排序商品信息")

Excel テーブルの Python 操作

* 3. テーブルの内容を変更します* 各行は別売りを表します。列は、販売された製品の種類 (A)、1 ポンドあたりの製品の価格
(B)、販売されたポンド数 (C)、および販売による総収益です。 TOTAL 列は、ポンドあたりのコストと販売ポンド数を乗算し、結果を最も近いセントに四捨五入する Excel の数式として設定されます。この数式を使用すると、列 B または C が変更されると、TOTAL 列のセルが自動的に更新されます。

更新する必要がある価格は次のとおりです:

セロリ 1.19

ニンニク 3.07
レモン 1.27

现在假设 Garlic、 Celery 和 Lemons 的价格输入的不正确。这让你面对一项无聊
的任务:遍历这个电子表格中的几千行,更新所有 garlic、celery 和 lemon 行中每磅
的价格。你不能简单地对价格查找替换,因为可能有其他的产品价格一样,你不希
望错误地“更正”。对于几千行数据,手工操作可能要几小时
下载文件 :  produceSales.xlsx
原文件打开情况:
Excel テーブルの Python 操作
1>  首先需要打开电子表格文件
2>  然后查找每一行内容,检查列 A (即列表的第一个索引)的值是不是 Celery、Garlic 或 Lemon
3>  如果是,更新列 B 中的价格(即列表第二个索引)
4>  最后将该表格保存为一个新的文件

import osimport openpyxldef readwb(wbname, sheetname=None):
    # 打开工作薄
    wb = openpyxl.load_workbook(wbname)    
    # 获取要操作的工作表
    if not sheetname:
        sheet = wb.active    else:
        sheet = wb[sheetname]    
        # 获取商品信息保存到列表中
    all_info = []    for row in sheet.rows:
        child = [cell.value for cell in row]
        all_info.append(child)        
        if child[0] == 'Celery':
            child[1] = 1.19
        if child[0] == 'Garlic':
            child[1] = 3.07
        if child[0] == 'Lemon':
            child[1] = 1.27
    return all_infodef save_to_excel(data, wbname, sheetname='sheet1'):
    """
    将信息保存到excel表中;
    """
    print("写入Excel[%s]中......." % (wbname))    
    # 打开excel表, 如果文件不存在, 自己实例化一个WorkBook对象
    wb = openpyxl.Workbook()    
    # 修改当前工作表的名称
    sheet = wb.active    
    # 修改工作表的名称
    sheet.title = sheetname    
    for row, item in enumerate(data):  # 0 [' BOOK', 50, 3]
        for column, cellValue in enumerate(item):  # 0 ' BOOK'
            sheet.cell(row=row + 1, column=column + 1, value=cellValue)    
            # ** 往单元格写入内容
    # sheet.cell['B1'].value = "value"
    # sheet.cell(row=1, column=2, value="value")
    # 保存写入的信息
    wb.save(filename=wbname)
    print("写入成功!")
data = readwb(wbname='/home/kiosk/Desktop/day17/produceSales.xlsx')
save_to_excel(data, wbname='new_Sales.xlsx', sheetname="商品信息")

Excel テーブルの Python 操作
表示写入新数据成功
Excel テーブルの Python 操作


这是更改后的保存的新表格

以上がExcel テーブルの Python 操作の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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