当前位置: 首页 > news >正文

网站建设黄页国际新闻头条

网站建设黄页,国际新闻头条,网站上传文件夹权限,想用自己电脑做服务器做个网站本文将介绍如何使用Python构建一个自动化工具,实现从MySQL数据库提取员工数据,并为每位员工生成包含定制化表格的PDF报告。通过该方案,可显著提升数据导出效率,避免手动操作误差,同时支持灵活的格式定制。 需求&#…

本文将介绍如何使用Python构建一个自动化工具,实现从MySQL数据库提取员工数据,并为每位员工生成包含定制化表格的PDF报告。通过该方案,可显著提升数据导出效率,避免手动操作误差,同时支持灵活的格式定制。

需求:从MySQL数据库提取员工数据,并为每位员工生成包含定制化表格的PDF报告。

最终想要的结果:

技术栈与核心功能

主要技术组件

  1. 数据库连接:使用pymysql实现Python与MySQL的交互,支持字符集配置和字典游标(便于数据处理)。

  2. PDF生成:基于reportlab库构建PDF文档,支持表格样式定制、中文字体渲染和动态内容生成。

  3. 异常处理:通过try-except结构和traceback模块捕获运行时错误,提供详细日志便于调试。

  4. 文件管理:自动创建输出目录,使用时间戳确保文件名唯一,避免文件覆盖。

功能亮点

  • 自动检测数据库表结构,支持动态字段提取

  • 为每位员工生成独立PDF,包含姓名、薪资等关键信息

  • 定制化表格样式(背景色、字体、边框等)

  • 完整的中文字体支持(通过注册系统字体实现)

核心代码解析

1. 数据库连接与数据获取

import pymysqldef connect_to_database():try:connection = pymysql.connect(host='127.0.0.1',user='root',password='root',database='250515sj',charset='utf8mb4',cursorclass=pymysql.cursors.DictCursor)print("数据库连接成功!")return connectionexcept Exception as e:# 详细异常日志记录print(f"数据库连接错误: {str(e)}")print("详细错误信息:\n", traceback.format_exc())return None
  • 关键配置:使用DictCursor直接返回字典格式数据,便于后续处理;charset='utf8mb4'确保支持 emoji 等特殊字符。

  • 健壮性设计:通过异常捕获避免程序因数据库连接失败崩溃,并提供堆栈跟踪信息。

    数据表内容:

2. 数据提取与表结构校验

def get_employees_data(connection):try:with connection.cursor() as cursor:# 表存在性校验cursor.execute("SHOW TABLES LIKE 'employees'")if not cursor.fetchone():print("错误:employees表不存在!")return None, None# 提取表结构与数据cursor.execute("SHOW COLUMNS FROM employees")columns = [col['Field'] for col in cursor.fetchall()]cursor.execute("SELECT * FROM employees")data = cursor.fetchall()print(f"表结构: {columns}, 获取到 {len(data)} 条记录")return columns, dataexcept Exception as e:# 数据操作异常处理print(f"获取数据错误: {str(e)}", traceback.format_exc())return None, None
  • 预处理逻辑:先校验表是否存在,避免后续操作抛出未知错误。

  • 数据格式:返回字段列表和字典数组,便于与PDF生成模块对接。

3. 个性化PDF生成

def create_pdf_for_employee(employee_data, columns):try:# 目录创建output_dir = "employee_pdfs"os.makedirs(output_dir, exist_ok=True)# 字段筛选与中文表头映射export_data = [employee_data[col] for col in ['name', 'salary']]filename = f"{employee_data['name']}_{datetime.now().strftime('%Y%m%d_%H%M%S')}.pdf"path = os.path.join(output_dir, filename)# PDF文档初始化doc = SimpleDocTemplate(path, pagesize=letter)styles = getSampleStyleSheet()# 中文字体注册(关键步骤)pdfmetrics.registerFont(TTFont('SimHei', 'SimHei.ttf'))title_style = ParagraphStyle('CustomTitle',parent=styles['Heading1'],fontName='SimHei',fontSize=24,spaceAfter=30)# 表格数据与样式table_data = [['姓名', '薪资'], export_data]table = Table(table_data)table.setStyle(TableStyle([('BACKGROUND', (0,0), (-1,0), colors.grey),    # 表头背景色('TEXTCOLOR', (0,0), (-1,0), colors.whitesmoke), # 表头文字颜色('ALIGN', (0,0), (-1,-1), 'CENTER'),            # 全局居中对齐('FONTNAME', (0,0), (-1,-1), 'SimHei'),          # 中文字体应用('GRID', (0,0), (-1,-1), 1, colors.black)        # 边框设置]))# 文档元素组装elements = [Paragraph(f"{employee_data['name']}的个人信息", title_style),Spacer(1, 20),table]doc.build(elements)return pathexcept Exception as e:print(f"生成PDF错误: {str(e)}", traceback.format_exc())return None
  • 中文字体解决方案:通过TTFont注册本地字体文件(需将SimHei.ttf放在程序目录或指定路径),解决中文乱码问题。

  • 样式定制技巧

    • 分层设置背景色(表头灰色,内容米色)

    • 不同层级字体大小(表头14pt,内容12pt)

    • 全局居中对齐与边框线增强可读性

  • 文件名策略:使用姓名+时间戳组合,确保唯一性并便于文件管理。

运行前准备

1、 安装依赖库:

pip install pymysql reportlab

2、 字体文件准备:

  • 从Windows系统字体目录(C:\Windows\Fonts\SimHei.ttf)复制到程序目录

  • 或替换为其他中文字体(如思源黑体),注意修改注册字体名称

3、 数据库配置:

  • 确保employees表存在,包含namesalary字段

  • 根据实际环境修改数据库连接参数(主机、用户名、密码等)

运行后的效果

**完整代码已同步至百度网盘,需要者阅读此文章:用Python实现数据库数据自动化导出PDF报告:从MySQL到个性化文档的全流程实践,读到最后有获取方式

http://www.dtcms.com/a/505297.html

相关文章:

  • 搭建网站赚钱吗郴州市地图全图
  • 常州网站快速排名优化网站搭建赚钱吗
  • 百度网站建设制作公司信息服务平台
  • 网站前瞻性_新流量机会内容建设分析淘宝关键词工具
  • 外贸企业网站制作哪家好手机微信网站怎么做的
  • 清远做网站网络科技网站建设
  • 蔡甸做网站建站哪个便宜
  • 网站建设毕业设计引言怎么写网站开发维护求职信
  • 网站购买域名吗百度网站禁止访问怎么解除
  • 做购物网站小图标怎样做电影下载网站
  • 公司网站建设的不足高平做网站
  • 公司网站建设费用计入什么科目西安 网站 制作
  • 流程网站设计阳江本地网络平台
  • 医院网站html模板噼里啪啦完整版高清免费观看
  • 关于做电影的网站设计rest api 做网站
  • 网站建设公司推网站子目录怎么做的
  • 织梦dedecms网站更换域名后文章图片路径批量修改网站建设攵金手指科杰壹陆
  • 服务器网站过多对排名企业网站建设三个原则
  • 汽车网站建设开题报告山西临汾建设局网站
  • 简单的网站建设模板东莞it外包
  • 百度SEO网站营销策划的六个步骤
  • 如何建自己网站网站收录入口申请查询
  • 网站 收录 做301计算机专业论文网站开发
  • 做网站合同封面给村里做网站
  • 程序员做情侣网站 礼物阿里巴巴司法拍卖网官网
  • 胖哥网站的建设目标交通局网站模板
  • 建设网站的一般过程七牛云最新消息
  • 网站红色模板包就业的培训学校
  • 温岭 网站建设wordpress查看站点
  • 成都网站设计得多少钱dedecms5.7环保科技公司网站模板