功能
将指定的a-b列转到指定的c-d行
示例
将上图转为下图
代码
import openpyxl
def transform_column_to_rows(input_file, output_file, x):
# 打开原始Excel文件
wb = openpyxl.load_workbook(input_file)
sheet = wb.active
# 打开另一个存储的Excel文件
new_wb = openpyxl.load_workbook(output_file)
new_sheet = new_wb.active
# 获取原始数据的行数
# max_row = sheet.max_row
max_row = 287#直接指定
# 循环遍历原始数据
for r in range(2, max_row + 1):
# 获取第r行的值
city_name = sheet.cell(row=r, column= 1).value
year = sheet.cell(row=1, column= x).value
original_value = sheet.cell(row=r, column=x).value
# 将值写入到新的Excel文件的第5*x行
new_sheet.cell(row=5 * (r - 1)+ (x - 6), column=3, value=original_value)
new_sheet.cell(row=5 * (r - 1) + (x - 6), column=2, value=year)
# new_sheet.cell(row=5 * (r - 1) + (x - 6), column=2, value=2010+x)#不要“年”字
new_sheet.cell(row=5 * (r - 1) + (x - 6), column=1, value=city_name)
# 保存新的Excel文件
new_wb.save(output_file)
# 用法示例:
# 将第2-7列的数据转为第5 * (r - 1) + (x - 6)行并存储到新的Excel文件
for i in range(2,7):
transform_column_to_rows("data.xlsx", "output.xlsx", i)