引言
在日常工作和学习中,我们常常需要创建具有特定格式的 Excel 文件来记录和评估各类数据。本文将详细介绍如何使用 Python 脚本生成一个包含评分细则的 Excel 文件,并对其进行精美的格式设置,使数据展示更加清晰、专业。我们将借助强大的pandas库来处理数据,以及openpyxl库来设置 Excel 文件的样式,同时通过优化代码结构,让整个脚本具有更高的可读性和维护性。
一、数据定义
首先,我们要明确评分细则的具体内容,通过定义一个字典data来存储相关信息。这个字典包含了六个关键的评估项目及其对应的评分细则、得分和权重。每个评估项目的初始评分为空值,而权重则根据项目的重要性合理分配了不同的百分比,具体数据如下:
data = {
'评估项目': [
'内容连贯性',
'事实符合度',
'语言表达流利度',
'信息含量',
'信息准确性',
'对话吸引力'
],
"评分细则": [
"1分:内容完全无法理解,表达混乱;\n2分:内容较难理解,表达存在明显问题;\n3分:内容勉强能理解,表达存在一些问题;\n4分:内容容易理解,表达较为清晰;\n5分:内容清晰易懂,表达完美无瑕。",
"1分:观点完全错误,毫无依据;\n2分:观点错误较多,依据不足;\n3分:观点部分正确,依据一般;\n4分:观点基本正确,依据充分;\n5分:观点完全正确,依据充分有力。",
"1分:结构混乱,条理不清晰;\n2分:结构较乱,条理不够清晰;\n3分:结构尚可,条理较为清晰;\n4分:结构合理,条理清晰;\n5分:结构严谨,条理非常清晰。",
"1分:创新性极低,毫无新意;\n2分:创新性较低,新意不足;\n3分:创新性一般,有一定新意;\n4分:创新性较高,新意较明显;\n5分:创新性极高,充满新意。",
"1分:深度非常浅,分析肤浅;\n2分:深度较浅,分析不够深入;\n3分:深度一般,分析尚可;\n4分:深度较深,分析到位;\n5分:深度非常深,分析透彻。",
"1分:实用性极低,无实际帮助;\n2分:实用性较低,帮助有限;\n3分:实用性一般,有一定帮助;\n4分:实用性较高,帮助较大;\n5分:实用性极高,极具参考价值。"
],
'得分': [' '] * 6,
'权重': ['20%', '20%', '15%', '20%', '15%', '10%']
}
二、创建 DataFrame
有了数据之后,我们将其转换为Pandas的DataFrame对象,这一步至关重要,因为它让我们能够以一种方便、高效的方式对数据进行各种操作,并为后续导出到 Excel 文件奠定基础。
import pandas as pd
df = pd.DataFrame(data)
三、导出到 Excel
使用Pandas的to_excel方法,我们可以轻松地将DataFrame保存为 Excel 文件。在这里,我们指定了文件名为 “评分细则.xlsx”,并且通过设置index=False,避免将索引列写入文件,使文件内容更加简洁明了。
file_path = '评分细则.xlsx'
df.to_excel(file_path, index=False)
四、加载并设置格式
为了让 Excel 文件更加美观、易读,我们需要进一步对其进行格式调整,这部分工作将借助openpyxl库来完成。
(一)设置列宽
首先,我们定义一个字典column_widths来存储每一列所需的宽度,然后通过遍历该字典,使用ws.column_dimensions[col].width = width的方式来设置每列的宽度,使表格内容能够完整、清晰地展示。
from openpyxl import load_workbook
from openpyxl.styles import Font, Alignment, Border, Side
wb = load_workbook(file_path)
ws = wb.active
column_widths = {'A': 20, 'B': 100, 'C': 10, 'D': 10, 'E': 10}
for col, width in column_widths.items():
ws.column_dimensions[col].width = width
(二)定义字体和对齐方式
为了统一管理字体和对齐方式,我们分别创建了两个字典fonts和alignments。fonts字典存储了不同样式的字体,如标题字体、详情字体、得分字体、权重字体和项目字体等;alignments字典则存储了不同的对齐方式,包括标题对齐、详情对齐和默认对齐等,以便在后续的单元格格式设置中灵活调用。
fonts = {
'title': Font(name='宋体', size=22, bold=True),
'detail': Font(name='宋体', size=16),
'score': Font(name='宋体', size=16, bold=True),
'weight': Font(name='宋体', size=16),
'project': Font(name='宋体', size=16, bold=True)
}
alignments = {
'title': Alignment(horizontal='center', vertical='center'),
'detail': Alignment(wrap_text=True, horizontal='center', vertical='center'),
'default': Alignment(vertical='center', horizontal='center')
}
(三)辅助函数
为了避免代码重复,提高代码的可读性和可维护性,我们创建了一个辅助函数set_cell_format。这个函数接收一个单元格对象、字体键和对齐方式键作为参数,用于简化单元格格式的设置过程,使代码更加简洁、清晰。
def set_cell_format(cell, font_key, alignment_key=None):
cell.font = fonts[font_key]
if alignment_key:
cell.alignment = alignments[alignment_key]
(四)应用格式
接下来,我们分别对标题、评分细则、得分和权重等各个部分应用相应的格式。通过调用辅助函数set_cell_format,我们可以以一种简洁明了的方式完成单元格格式的设置,使表格内容更加美观、专业。
# 应用标题格式
for cell in ws['1:1']:
set_cell_format(cell, 'title')
# 应用评分细则格式
for row in range(2, 8): # 行号从2开始,到7结束
set_cell_format(ws.cell(row=row, column=2), 'detail', 'detail')
set_cell_format(ws.cell(row=row, column=3), 'score')
set_cell_format(ws.cell(row=row, column=4), 'weight', 'default')
set_cell_format(ws.cell(row=row, column=1), 'project', 'default')
(五)设置边框
最后,我们为整个表格添加细边框,通过遍历表格的每一个单元格,并设置其边框样式为细边框,使表格看起来更加整洁美观、规范专业。
thin_border = Border(left=Side(style='thin'), right=Side(style='thin'), top=Side(style='thin'), bottom=Side(style='thin'))
for row in ws.iter_rows(min_row=1, max_row=7, min_col=1, max_col=5):
for cell in row:
cell.border = thin_border
(六)保存文件
完成所有格式设置后,我们使用wb.save(file_path)将更改保存回 Excel 文件,并打印出文件保存的路径,以便用户确认文件是否成功保存。
效果图
wb.save(file_path)
print(f"Excel文件已保存到 {file_path}")
五、总结
通过本文介绍的 Python 脚本,我们可以轻松地生成并格式化一个包含评分细则的 Excel 文件。借助pandas和openpyxl库的强大功能,我们不仅能够高效地处理数据,还能灵活地控制输出文件的外观样式。此外,通过合理的代码组织和辅助函数的应用,显著提高了代码的可读性和维护性,使我们能够更加方便地对代码进行扩展和修改。
Author:余胜辉

535

被折叠的 条评论
为什么被折叠?



