好久没在CSDN写文章了,现在已经不只是做Unity了,也不只是停留在开发的初级阶段。加上工作这么久,Unity、UE4、Python、Flutter、Playcanvas、ThreeJS等等都在弄,东西多了杂了,精力也不够了,慢慢就不写了。也感谢CSDN,算是我程序道路上的一大助力!
今后,我会好好做产品经理的。
代码目的:把EXCLE中横向的数据结构改为竖向的结构。
直接贴代码了,解释较少,本文的目的主要为了个人进行记录,方便后期黏贴使用,如有不近人意的地方请见谅。
from openpyxl import Workbook
from openpyxl import load_workbook
from openpyxl.styles import colors
from openpyxl.styles import Color
from openpyxl.styles import Border, Side, PatternFill, Font, GradientFill, Alignment
import datetime
#获取generator类型数据的长度
def get_length(generator):
if hasattr(generator,"__len__"):
return len(generator)
else:
return sum(1 for _ in generator)
# 进行Excle处理的类
class ExcleTool:
#Excle文件的全路径
excle_file_Path =''
def __init__(self,excle_file_Path):
self.excle_file_Path = excle_file_Path
#读取文件
def readExcle(self):
#打开工作表
wb = load_workbook(self.excle_file_Path)
print(wb.sheetnames)
return wb
def updateExcle(self,wb):
# 选择工作表的第一个tab页
ws1 = wb[wb.sheetnames[0]]
# 并创建一个新的Tab页,用于存放新的数据。
ws_new = wb.create_sheet("right")
start_row = 2
ws1_rows = get_length(ws1.rows)
ws1_columns = get_length(ws1.columns)
print("行: " + str(ws1_rows)+ " : " + "列: " + str(ws1_columns))
# 以下代码的业务背景为:老的数据排列是横向的,比如一行里面就有 姓名:x1、x2,性别:男、女等
# 以下逻辑就是把这种横向数据改为数项的结构。
# 附近我会放上已经处理好的数据,可以更方便了解做了什么。
# 理解到有什么改变后,看下面代码会简单些。
# 但可能你的业务逻辑不同,所以删除也行。我会把 excel主要操作的代码注释,业务方便的就不细说了。
ws_new_curr_row = 1
data_range = 12 # 正确数据的范围。11列为一行数据
for row in ws1.iter_rows(min_row=start_row, max_row=ws1_rows, max_col=1):
for cell in row:
#读取一个格子的数据,如果没有,则会赋值value 的值。
_ = ws_new.cell(row=ws_new_curr_row,column=1,value = cell.value)
# 设置格子中字体大小、颜色、加粗
_ .font = Font(b=True, size=14,color="00FFFFFF")
# 设置格子的内容左对齐
_.alignment = Alignment(horizontal="left", vertical="center")
# 设置格子的背景色为渐变色
_.fill = fill = GradientFill(stop=("00000080", "003366FF"))
offest = 2
new_col_index =1
for col_index in range(offest,ws1_columns):
yu = (col_index-offest)%data_range
#11的整数
if(yu == 0):
ws_new_curr_row+=1
new_col_index =1
# 取一个格子的数据
ws1_d = ws1.cell(row=cell.row,column=col_index)
# 为新的Tab页中格子进行赋值
new_ws = ws_new.cell(row=ws_new_curr_row,column=new_col_index,value = ws1_d.value)
# 更改对齐方式,第一列的做对齐,剩下的列为剧中对齐。
new_ws.alignment = Alignment(horizontal=("left" if (yu == 0) else "center"), vertical="center")
#下一列
new_col_index +=1
# print('行数据 %s'%(ws1_d.value))
ws_new_curr_row +=3
#完成操作后记着要保存
wb.save("newExcel.xlsx")
print(' OK')
excletool = ExcleTool('datatable.xlsx')
wb = excletool.readExcle()
excletool.updateExcle(wb)
文件仅供学习,不可商用或外传。
处理后的文件地址
免费下载:https://download.csdn.net/download/KiTok/77853134