division = '全国总决赛' cert.printcount = 110 scorefile = r'H:\SmartCar\2023\CertPrint\DOP\工程挑战赛\MicroPython现场挑战赛成绩单.xlsx' wb = openpyxl.load_workbook(scorefile, data_only=True) ws = wb.get_sheet_by_name("Sheet1") corders = "零一二三四五六七八九十" #------------------------------------------------------------ outdir = r'd:\temp\CERTIFCATION' picdirdef = outdir if not os.path.isdir(picdirdef): os.mkdir(picdirdef) else: shutil.rmtree(picdirdef) os.mkdir(picdirdef) #------------------------------------------------------------ for id,a in enumerate(ws): astr = [str(aa.value) for aa in a] # printf(astr) if not astr[0].isdigit(): continue university = astr[2] team = astr[3] mentors = [s for s in astr[5].split() if len(s) >= 2 and s != 'None'] students = [s for s in astr[4].split() if len(s) >= 2 and s != 'None'] N = int(astr[0]) award = '团体第%s名'%(corders[N]) order = '' printff(id,university, team, mentors, students, award, order) # continue cert.printcert(university, team, group, award, order, students, mentors, division, picdir = picdirdef) printf('\a') # break #------------------------------------------------------------ printf('\a') #------------------------------------------------------------ # END OF FILE : FINALPRINT.PY #============================================================
时间: 2025-03-13 17:01:59 浏览: 42
### 使用Python和Openpyxl读取Excel文件并生成证书
为了实现这一目标,可以按照如下方法操作:
通过 `openpyxl` 库加载 Excel 文件,并遍历工作表中的每一行数据。对于每一条记录,提取所需字段用于创建个性化的证书文档。
```python
from openpyxl import load_workbook
wb = load_workbook("data/名单.xlsx") # 加载指定路径下的Excel文件
ws = wb.active # 获取活动的工作表对象
```
接着定义一个字典存储从表格中获取的信息,在循环过程中不断更新此字典的内容[^2]。
```python
certificates_data = {}
for row in range(2, ws.max_row + 1):
student_class = ws[f'A{row}'].value # 假设A列为班级编号
student_name = ws[f'B{row}'].value # B列为学生姓名
certificates_data.setdefault(student_class, [])
certificates_data[student_class].append({
'name': student_name,
'class': student_class
})
```
完成上述步骤之后,就可以基于收集到的学生信息列表来构建对应的证书HTML或者PDF格式的文件了。这里假设有一个简单的 HTML 模板用来表示单张电子版荣誉证书的样子:
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Certificate</title>
<style type="text/css">
body { text-align:center; }
h1 { font-size:3em;}
p {font-size:2em}
</style>
</head>
<body>
<h1>优秀学员奖状</h1>
<p>授予:<strong>{name}</strong></p>
<p>来自<strong>{class}</strong>班的同学</p>
<footer style="margin-top:50px;">特此证明。</footer>
</body>
</html>
```
最后一步就是利用 Jinja2 或其他模板引擎渲染这些个性化内容至实际文件当中去。当然也可以选择 PDFKit 这样的工具直接转换成 PDF 文档形式保存下来作为正式颁发给学生的实体奖励凭证。
#### 注意事项
当涉及到更复杂的场景比如应用条件格式化规则时,则可能需要额外开发逻辑来进行解析和支持[^3]。
阅读全文
相关推荐















