项目说明
编写一个程序,翻转电子表格中行和列的单元格。例如,第5 行第3 列的值将出现在第3 行第5 列(反之亦然)。这应该针对电子表格中所有单元格进行。例如,之前和之后的电子表格应该看起来如下图所示。
程序可以这样写:
利用嵌套的for 循环,将电子表格中的数据读入一个列表的列表。这个数据结构用sheetData[x][y]表示列x 和行y 处的单元格。然后,在写入新电子表格时,将sheetData[y][x]写入列x 和行y 处的单元格。
代码块
#! /usr/bin/env python3
# overturnForm.py - 翻转表格中行和列的单元格
import openpyxl
wb = openpyxl.load_workbook('example.xlsx')
sheet = wb.active
sheetData = [] # 建立一个"工作表列表"
for i in range(1, sheet.max_row + 1): # 以循环的方式将内嵌循环所得的"行列表"数据插入到"工作表列表中"
rowData = [] # 建立一个"行列表"
for j in range(1, sheet.max_column + 1): # 以循环的方式将每行的单元格插入到"行列表"中
rowData.append(sheet.cell(row=i, column=j).value)
sheetData.append(rowData)
wbNew = openpyxl.Workbook() # 建立一个新的工作簿
sheetNew = wbNew.active
for i in range(1, sheet.max_column + 1): # 以循环的方式将工作表列表中的数据复制到相对应的新的单元格中
for j in range(1, sheet.max_row + 1): # i行j列的数据复制到新表中的j行i列
sheetNew.cell(row=i, column=j).value = sheetData[j-1][i-1]
print('Done!')
wbNew.save('example_copy.xlsx')