如何使用Python获取dataframe的可读可打印文本副本
DataFrame一键打印最优解决方案
以下两种方案均无需用户手动打开Excel、PDF等第三方文件,点击应用内按钮即可完成打印流程,对电脑操作不熟练的人群友好:
方案1:自适应排版HTML自动打印(推荐,适配所有场景)
核心逻辑是先对表格做打印适配排版,生成临时HTML后自动调起系统打印预览,表格会自动适配纸张大小、分页、列宽,可读性远高于原生导出的PDF/HTML文件。
- 依赖安装:
pip install pretty-html-table - 代码示例:
import pandas as pd from pretty_html_table import build_table import tempfile import webbrowser import os def print_df(df): # 生成适配打印的美化表格,可自行调整字体大小、边距、配色 table_html = build_table( df, theme='blue_light', font_size='12px', padding='6px', text_align='left' ) # 嵌入自动打印脚本和打印样式,默认横向打印、边距1cm full_html = f""" <html> <head> <meta charset="UTF-8"> <style> @media print { @page { size: landscape; margin: 1cm; } table { border-collapse: collapse; width: 100%; } th, td { border: 1px solid #ddd; padding: 6px; } } </style> </head> <body onload="window.print(); setTimeout(() => window.close(), 100);"> {table_html} </body> </html> """ # 生成临时HTML文件自动打开,用完即删不留垃圾 with tempfile.NamedTemporaryFile('w', suffix='.html', delete=False, encoding='utf-8') as f: f.write(full_html) temp_path = f.name webbrowser.open_new(temp_path) os.unlink(temp_path)
- 操作流程:用户点击打印按钮后,系统自动弹出打印预览,确认打印机后点击「打印」即可,全程无需额外操作。
方案2:无预览直接打印(适合固定格式场景)
如果不需要用户调整打印参数,可直接调用系统默认打印机完成打印,全程无弹窗。
- 依赖安装:
pip install pywin32(仅支持Windows系统) - 代码示例:
import pandas as pd import win32print import win32ui import win32con def print_df_direct(df): # 转成等宽格式化文本,可调整列宽适配纸张 formatted_content = df.to_string(col_space=12, justify='left', max_colwidth=30) default_printer = win32print.GetDefaultPrinter() h_printer = win32print.OpenPrinter(default_printer) try: h_dc = win32ui.CreateDC() h_dc.CreatePrinterDC(default_printer) h_dc.StartDoc('DataFrame打印任务') h_dc.StartPage() h_dc.SetMapMode(win32con.MM_TWIPS) # 调整起始位置和行间距适配纸张大小 y_pos = 14000 for line in formatted_content.split('\n'): h_dc.TextOut(200, y_pos, line) y_pos -= 200 # 超过页高自动换页 if y_pos < 1000: h_dc.EndPage() h_dc.StartPage() y_pos = 14000 h_dc.EndPage() h_dc.EndDoc() finally: win32print.ClosePrinter(h_printer)
两种方案都完全规避了用户手动操作文件的流程,你可以根据你的应用场景选择对应方案。
内容的提问来源于stack exchange,提问作者Kushagra Jain
相关产品推荐
相关产品推荐

