PythonのExcelに対する一般的な操作

6994 ワード

本文はPythonのExcelに対するよく使う操作のデモです
テスト環境:
Python 3.7 openpyxl 3.0.5 Windows 10プロフェッショナル版(CPU:i 5-8500 RAM:16 GB)
使用したPythonパッケージ:
1.OS(内蔵、インストール不要)2.random(内蔵、インストール不要)3.Openpyxlインストール:
pip3 install openpyxl==3.0.5

実行コード
# 1.  'excel_oparetion.rar' 
# 2.
python3 excel_base_op.py

Excelがopenpyxlで対応するオブジェクト
ワークブック(workbook):Excelスプレッドシートドキュメント;ワークシート(sheet):各ワークブックには、sheet 1、sheet 2など、複数のテーブルが含まれます.アクティブテーブル(active sheet):ユーザーが現在表示しているテーブル;列(column):列アドレスはAから始まる.行(row):行アドレスは1から始まります.セル(cell):特定の行と列の四角形;
Openpyxlの基礎操作(一歩一歩操作することをお勧めしますよ、後ろに完全なコードがありますが)
ガイドパック
import random
import openpyxl

Excel:1を読み込みます.既存のワークシートを開き、workbookオブジェクトを取得
file_name = "  .xlsx"
wb = openpyxl.load_workbook(file_name)

2.workbookの基本プロパティ
#        sheet   ,      
sheet_name_lis = wb.sheetnames
print("   %s,   sheet      :%s" % (file_name, sheet_name_lis))
#      .xlsx,   sheet      :['Sheet1', 'Sheet2']

3.sheetオブジェクトの取得
sheet_name_1 = wb.sheetnames[0]
sheet_1 = wb[sheet_name_1]

4.sheetの基本属性
print("%s    :%s,     :%s" % (sheet_1.title,sheet_1.max_column, sheet_1.max_row))
# Sheet1    :5,     :10

5.cellオブジェクトの取得
cell_1_2 = sheet_1.cell(1, 2)

6.cellの基本プロパティ
print("   %s,  :%s,    :%s,   %s" % (
            cell_1_2.coordinate, cell_1_2.value, cell_1_2.row, cell_1_2.column
        ))
#    B1,  :  B1,    :1,   2

7.様々な方法でcellにアクセス
# 1.        
#   
col_b = sheet_1['B']
print("  %s  B  :%s" % (sheet_1.title, [cel.value for cel in col_b]))
#   Sheet1  B  :['  B1', '  B2', '  B3', '  B4', '  B5', '  B6', '  B7', '  B8', '  B9', '  B10']

#   
# col_range = sheet_1['C:D']
# 2.        
#   
row_3 = sheet_1[3]
print("  %s  3  :%s" % (sheet_1.title, [r.value for r in row_3]))
#   Sheet1  3  :['  A3', '  B3', '  C3', '  D3', '  E3']

#   
# row_range = sheet_1[2:5]

二、Excelに書き込む:
1.新しいexcelファイルを作成します.もちろん、現在のファイルで変更することもできます.
#   Workbook      
new_wb = openpyxl.Workbook()

2.新しいsheetの作成
#     sheet,     
new_sheet_1 = new_wb.active
#      sheet,   “sheet”
new_sheet_1.title = "   sheet"
#        sheet
# new_sheet_1 = new_wb.create_sheet("  title", 0)

3.データの挿入
# 1.       ,    
new_sheet_1['A2'] = "   "
new_sheet_1.cell(row=2, column=2).value = "   "
new_sheet_1.cell(row=2, column=3, value="   ")
# 2.   
#        sheet    (           )    list,tuple,dict,range,generator   。
# 1,   list, list        。
# 2,   dict,             。
new_sheet_1.append([0, 1, 2, 3])
new_sheet_1.append({"A": "This is A", "C": "This is C"})
new_sheet_1.append({1: "This is A", 3: "This is C"})

#         
col_c = new_sheet_1['C']
for cel in col_c:
    cel.value = random.randint(1, 50)

col_range = new_sheet_1['C:D']
for _cel in col_range:
    for c in _cel:
        c.value = random.randint(1, 50)

#         
# row_10 = new_sheet_1[10]
# row_range = new_sheet_1[2:9]

4.保存(必ず保存!!)
new_wb.save("    .xlsx")
#       ,           ,    
# PermissionError: [Errno 13] Permission denied: '    .xlsx'

三・その他1.sheetのコピーの作成
copy_sheet = new_wb.copy_worksheet()

2.cellの背景色を設定する(RRGGBB)
from openpyxl.styles import PatternFill
#     
green_fill = PatternFill(fgColor="AACF91", fill_type="solid")
orange_fill = PatternFill(fgColor="FFC125", fill_type="solid")
#     
new_sheet_1.cell(2, 2).fill = green_fill
new_sheet_1.cell(2, 3).fill = orange_fill
new_wb.save("    .xlsx")

四.練習は練習による.xlsx'ファイルsheet 2のH列をグループ化し、値が1の行を新規作成したsheetに、値が2の行を新規ファイルに埋め込みます.
五.プレゼンテーションの完全性
import random
import openpyxl
from openpyxl.styles import PatternFill

file_name = "  .xlsx"
wb = openpyxl.load_workbook(file_name)

#        sheet   ,      
sheet_name_lis = wb.sheetnames
print("   %s,   sheet      :%s" % (file_name, sheet_name_lis))
#      .xlsx,   sheet      :['Sheet1', 'Sheet2']

sheet_name_1 = wb.sheetnames[0]
sheet_1 = wb[sheet_name_1]

print("%s    :%s,     :%s" % (sheet_1.title, sheet_1.max_column, sheet_1.max_row))
# Sheet1    :5,     :10

cell_1_2 = sheet_1.cell(1, 2)
print("   %s,  :%s,    :%s,   %s" % (
            cell_1_2.coordinate, cell_1_2.value, cell_1_2.row, cell_1_2.column
        ))
#    B1,  :  B1,    :1,   2

# 1.        
#   
col_b = sheet_1['B']
print("  %s  B  :%s" % (sheet_1.title, [cel.value for cel in col_b]))
#   Sheet1  B  :['  B1', '  B2', '  B3', '  B4', '  B5', '  B6', '  B7', '  B8', '  B9', '  B10']

#   
# col_range = sheet_1['C:D']

# 2.        
#   
row_3 = sheet_1[3]
print("  %s  3  :%s" % (sheet_1.title, [r.value for r in row_3]))
#   Sheet1  3  :['  A3', '  B3', '  C3', '  D3', '  E3']

#   
# row_range = sheet_1[2:5]


#   Workbook      
new_wb = openpyxl.Workbook()

#     sheet,     
new_sheet_1 = new_wb.active
#      sheet,   “sheet”
new_sheet_1.title = "   sheet"
#        sheet
# new_sheet_1 = new_wb.create_sheet("  title", 0)

# 1.       ,    
new_sheet_1['A2'] = "   "
new_sheet_1.cell(row=2, column=2).value = "   "
new_sheet_1.cell(row=2, column=3, value="   ")
# 2.   
#        sheet    (           )    list,tuple,dict,range,generator   。
# 1,   list, list        。
# 2,   dict,             。
new_sheet_1.append([0, 1, 2, 3])
new_sheet_1.append({"A": "This is A", "C": "This is C"})
new_sheet_1.append({1: "This is A", 3: "This is C"})

#         
col_c = new_sheet_1['C']
for cel in col_c:
    cel.value = random.randint(1, 50)

col_range = new_sheet_1['C:D']
for _cel in col_range:
    for c in _cel:
        c.value = random.randint(1, 50)

#         
#   
# row_10 = new_sheet_1[10]
#   
# row_range = new_sheet_1[2:9]

new_wb.save("    .xlsx")
#       ,           ,    
# PermissionError: [Errno 13] Permission denied: '    .xlsx'

#     
green_fill = PatternFill(fgColor="AACF91", fill_type="solid")
orange_fill = PatternFill(fgColor="FFC125", fill_type="solid")
#     
new_sheet_1.cell(2, 2).fill = green_fill
new_sheet_1.cell(2, 3).fill = orange_fill
new_wb.save("    .xlsx")