1、Openpyxl模塊
Openpyxl是一個(gè)用于處理xlsx格式Excel表格文件的第三方python庫(kù),幾乎支持Excel表格的所有操作
基本概念:
- Workbook:相當(dāng)于一個(gè)Excel文檔,每個(gè)Workbook對(duì)象都是一個(gè)獨(dú)立的Excel文件
- Sheet:Excel文檔中的表單,每個(gè)Excel文檔中至少有一個(gè)Sheet
- Cell:Excel單元格,是不可分割的基本數(shù)據(jù)存儲(chǔ)單元
安裝:
pip install openpyxl
2、Excel寫入
2.1、新建
from openpyxl import load_workbook, Workbook
# 新建一個(gè)Excel文檔(初始化)
workbook = Workbook()
# 初始化/獲取一個(gè)Sheet(新創(chuàng)建的Excel默認(rèn)自帶名為Sheet的表單)
# sheet = workbook.active
# 創(chuàng)建一個(gè)Sheet,新建的多個(gè)Sheet默認(rèn)插在后面
sheet = workbook.create_sheet("Sheet1")
# 創(chuàng)建一個(gè)Sheet,插入到最前面
# sheet = workbook.create_sheet("Sheet1", 0)
2.2、添加數(shù)據(jù)
'''
append(list):在已有的數(shù)據(jù)后面追加寫入(增量寫入)
'''
# 定義表頭(插入一條數(shù)據(jù))
sheet.append(['id', 'name', 'age', 'addr'])
# 批量插入數(shù)據(jù)
data = [
['001', 'Tom', 18],
['002', 'Jerry', 17, 'US'],
['003', 'Alice', 20]
]
for row in data:
sheet.append(row)
# 保存Excel-Sheet1
workbook.save(r'C:\Users\cc\Desktop\openpyxl.xlsx')
2.3、單元格格式
from openpyxl.styles import Font, Border, Side, PatternFill, colors, Alignment
# 1)字體
# 設(shè)置A1單元格字體風(fēng)格為Times New Roman,大小16,粗體、斜體,藍(lán)色
sheet['A1'].font = Font(name='Times New Roman', size=16, bold=True, italic=True, color=colors.BLUE)
# 2)對(duì)齊方式
# 設(shè)置單元格horizontal水平和vertical垂直對(duì)齊方式,其他值:left、right
sheet['A1'].alignment = Alignment(horizontal='center', vertical='center')
# 3)行高和列寬
# 設(shè)置行高
sheet.row_dimensions[1].height = 25
# 設(shè)置列寬
sheet.column_dimensions['A'].width = 15
# 4)邊框
# 設(shè)置邊框四個(gè)方向的線條種類
left, right, top, bottom = [Side(style='thin', color='000000')] * 4
# 將各方向線條作為參數(shù)傳入Border方法
sheet['A1'].border = Border(left=left, right=right, top=top, bottom=bottom)
# 5)合并、拆分單元格
# 合并單元格
sheet.merge_cells('A1:B2')
# 拆分單元格
sheet.unmerge_cells('A1:B2')
# 保存Excel-Sheet2
workbook.save(r'C:\Users\cc\Desktop\openpyxl.xlsx')
3、Excel讀取
'''
load_workbook(Excel):文件必須是xlsx格式,默認(rèn)為可讀可寫
'''
workbook = load_workbook(r'C:\Users\cc\Desktop\openpyxl.xlsx')
# 讀取指定Sheet
sheet = workbook.get_sheet_by_name('Sheet1')
# 追加一條記錄
sheet.append(['004', 'Bob', 19, 'CN'])
# 保存Excel
workbook.save(r'C:\Users\cc\Desktop\openpyxl.xlsx')
4、Excel的CRUD
添加數(shù)據(jù)見2.2節(jié)文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-730902.html
4.1、查
# 獲取所有Sheet表名,返回List
print(workbook.sheetnames) # ['Sheet', 'Sheet1']
# 最大行數(shù)
print(sheet.max_row)
# 最大列數(shù)
print(sheet.max_column)
# 單元格訪問(wèn)
print(sheet['A1'].value)
print(sheet.cell(row=4, column=2).value)
# 訪問(wèn)行或列
print(sheet['A'])
print(sheet['A':'C'])
print(sheet[1])
print(sheet[1:3])
# 獲取所有行或列
row_list = []
for row in sheet.iter_rows():
row_ls = []
col_len = len(list(sheet.iter_cols()))
for cell in row:
col_len -= 1
row_ls.append(cell.value)
if col_len == 0:
continue
row_list.append(row_ls)
print(row_list)
'''
[['id', 'name', 'age', 'addr'], ['001', 'Tom', 18, None], ['002', 'Jerry', 17, 'US'], ['003', 'Alice', 20, None]]
'''
4.2、改
# 修改指定值
sheet['C4'].value = 21
sheet.cell(row=4, column=4).value = 'CN'
# 修改操作后要保存
workbook.save(r'C:\Users\cc\Desktop\openpyxl.xlsx')
4.3、刪
# 刪除指定行或列
sheet.delete_rows(2)
# 刪除Excel-Sheet
workbook.remove_sheet(sheet)
del workbook['Sheet']
# 刪除操作后要保存
workbook.save(r'C:\Users\cc\Desktop\openpyxl.xlsx')
更多使用見:https://geek-docs.com/python/python-tutorial/python-openpyxl.html文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-730902.html
到了這里,關(guān)于Python數(shù)據(jù)分析之Excel的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!