場(chǎng)景概述
這個(gè)標(biāo)題可能過(guò)于籠統(tǒng)菜枷,只因個(gè)人不知如何具體陳述搭儒。想要表達(dá)的內(nèi)容如下:
原數(shù)據(jù)data.xlsx中Sheet1工作表數(shù)據(jù):
需將原數(shù)據(jù)轉(zhuǎn)換成下圖效果咨演,并保存到data.xlsx文件的Sheet3工作表中:
工具準(zhǔn)備
openpyxl模塊
代碼實(shí)現(xiàn)
from openpyxl import load_workbook
# 需要處理的文件
file = r'C:/Users/Administrator/Desktop/test/data.xlsx'
wb = load_workbook(file)
# 激活工作表'Sheet1'
ws = wb['Sheet1']
# 創(chuàng)建工作表
ws_res = wb.create_sheet('Sheet3')
# 創(chuàng)建表頭
ws_res['A1'] = '班級(jí)'
ws_res['B1'] = '姓名'
# 獲取數(shù)據(jù)范圍蘑秽,即數(shù)據(jù)最大的行數(shù)和列數(shù)
max_r = ws.max_row
max_c = ws.max_column
w_r = 1
c_max = 1
for r in range(2, max_r+1):
for c in range(1, max_c+1):
if ws.cell(r, c+1).value is not None: # 判斷該行數(shù)據(jù)的最后一列
print('%s %s' % (ws.cell(r, 1).value, ws.cell(r, c + 1).value))
ws_res['A' + str(w_r + 1)] = ws.cell(r, 1).value
ws_res['B' + str(w_r + 1)] = ws.cell(r, c + 1).value
c_max = c_max + 1
w_r = w_r + 1
w_r = c_max
# 保存數(shù)據(jù)
wb.save(file)
執(zhí)行代碼后打開原data.xlsx喉脖,這里多了Sheet3工作表夸楣,且達(dá)到了我們預(yù)期的數(shù)據(jù)呈現(xiàn)效果宾抓!
下節(jié),我們將介紹如何把剛才的需求反向輸出豫喧,即本節(jié)實(shí)現(xiàn)的呈現(xiàn)效果石洗,轉(zhuǎn)換為本節(jié)原呈現(xiàn)方式!=粝浴讲衫!