这样的excel文件每两列画一组散点图,而且所有的散点图都要在一张图上面。
import os
import win32ui
import openpyxl
from openpyxl.chart import(ScatterChart,Reference,Series)
DesktopPath = 'C:\\' # 桌面路径
FilePath = win32ui.CreateFileDialog(1) # 1表示打开文件对话框
FilePath.SetOFNInitialDir(DesktopPath ) # 设置打开文件对话框中的初始显示目录
FilePath.DoModal() # 等待获取用户选择的文件
FileName = FilePath.GetPathName() # 获取选择的文件名称
file = os.path.split(FileName)[0] # 文件夹
lst = os.listdir(file) # 列出所有文件
if not os.path.exists(file+"\\T2数据处理"):
os.mkdir(file+"\\T2数据处理") # 文件夹已经存在,如果接着创建程序会报错
new = file+"\\T2数据处理"
else:
i = 0
while True:
if not os.path.exists(file+"\\T2数据处理"+str(i)):
os.mkdir(file+"\\T2数据处理"+str(i))
new = file+"\\T2数据处理"+str(i)
break
else:
i=i+1
for item in lst:
if item.endswith('.xlsx'): # 文件格式是Excel的文件
path = file + '\\' + item # 文件路径
# path = repr(path) 正则化
wb = openpyxl.load_workbook(path) # 打开已有的文件
ws = wb.active # 查看已激活的sheet
maxcol = ws.max_column # 当前sheet的最大列
maxrow = ws.max_row # 当前sheet的最大行
print(maxcol)
# 第四步:创建散点图,并设置图的样式
chart = ScatterChart()
chart.title = '105LiM0LiCL'
chart.style = 10
chart.y_axis.title = '弛豫信号'
chart.x_axis.title = 'T2'
# 设置坐标轴位置
# chart为散点图对象
chart.x_axis.crosses = 'min' # min是“y轴的最小值”
chart.y_axis.crosses = 'max' # max是“X轴的最大值”
# 改成对数x轴
chart.x_axis.scaling.logBase = 10
# 宽高
chart.height = 12
chart.width = 18
#
chart.y_axis.crosses = 'min'
chart.y_axis.tickLblPos = 'low'
#
chart.y_axis.majorGridlines = None
chart.x_axis.majorGridlines = None
# 刻度线的显示位置
chart.y_axis.majorTickMark = 'in' # ['cross:俩边', 'in:内', 'out:外'] 不设没有
chart.x_axis.majorTickMark = 'in' # ['cross:俩边', 'in:内', 'out:外'] 不设没有
for i in range(1, maxcol, 2):
# 选择两列组成一个系列
xdata = Reference(worksheet=ws, min_row=2, max_row=maxrow, min_col=i, max_col=i)
ydata = Reference(worksheet=ws, min_row=1, max_row=maxrow, min_col=i + 1, max_col=i + 1)
series = Series(ydata, xdata, title_from_data=True)
# 第五步:将数据系列添加到图中
chart.series.append(series)
# 第六步:将图添加到工作表中
ws.add_chart(chart, 'D6')
# 第七步:保存Excel
New_path = new + '\\' + os.path.basename(path)
wb.save(New_path)
else:
continue
对于win32ui可能会安装失败,可以参考下面一篇文章进行安装
pip install win32gui 安装报错解决方案_python_Arthuryeah-DevPress官方社区