影刀RPA Excel打印设置:页面布局与打印区域 📅 2026/7/9 4:37:51 影刀RPA Excel打印设置页面布局与打印区域作者林焱什么情况用什么做报表自动化最后一步往往是打印或导出PDF。直接用Excel默认打印出来的东西缩放不对、页边距乱、表头每页不重复、打印区域把空白列也带进去了。这些问题在影刀RPA里通过openpyxl的页面设置属性可以精确控制。适用场景自动化生成报表后需要打印或转PDF、批量设置多个Excel文件的打印格式、需要固定打印区域和重复表头。怎么做基础打印设置在影刀RPA流程中用【执行Python代码】节点操作openpyxl设置打印参数importopenpyxlfromopenpyxl.worksheet.pageimportPageMargins wbopenpyxl.load_workbook(rC:\Reports\sales_report.xlsx)wswb.active# 页面方向横向报表通常横向ws.page_setup.orientationws.ORIENTATION_LANDSCAPE# 纸张大小A4ws.page_setup.paperSizews.PAPERSIZE_A4# 缩放方式调整为1页宽高度自动分页ws.page_setup.fitToWidth1[video(video-gTE4bBoJ-1783501115678)(type-csdn)(url-https://live.csdn.net/v/embed/526818)(image-https://v-blog.csdnimg.cn/asset/582d14c3bd0451c5399cd990b56e2a0d/cover/Cover0.jpg)(title-拼多多店群自动化报活动上架)]ws.page_setup.fitToHeight0# 0表示高度不限制ws.sheet_properties.pageSetUpPr.fitToPageTrue# 页边距单位英寸ws.page_marginsPageMargins(left0.5,right0.5,top0.75,bottom0.75,header0.3,footer0.3)wb.save(rC:\Reports\sales_report.xlsx)设置打印区域只打印A1到F50的范围不要把旁边的辅助列打进去# 设置打印区域ws.print_areaA1:F50# 如果数据行数动态变化last_rowws.max_row ws.print_areafA1:F{last_row}重复表头每页都显示标题行多页打印时第一行标题只在第一页显示后面几页没表头根本看不懂# 每页重复打印第1行标题行ws.print_title_rows1:1# 如果有两行标题ws.print_title_rows1:2# 重复左侧列某些横向报表需要ws.print_title_colsA:A页眉页脚设置# 页眉中间显示文件名ws.oddHeader.center.textF# F 文件名ws.oddHeader.right.textD T# D 日期T 时间# 页脚中间显示页码ws.oddFooter.center.text第 P 页共 N 页# P 当前页N 总页数# 页脚左边显示自定义文字ws.oddFooter.left.text内部资料·请勿外传批量设置打印格式用影刀RPA【遍历文件夹】【执行Python代码】给整个目录的Excel统一设置打印格式importopenpyxlimportosfromopenpyxl.worksheet.pageimportPageMarginsdefsetup_print_format(file_path):统一设置打印格式wbopenpyxl.load_workbook(file_path)forwsinwb.worksheets:# 横向A4ws.page_setup.orientationws.ORIENTATION_LANDSCAPE ws.page_setup.paperSizews.PAPERSIZE_A4# 缩放为1页宽ws.page_setup.fitToWidth1ws.page_setup.fitToHeight0ws.sheet_properties.pageSetUpPr.fitToPageTrue# 统一页边距ws.page_marginsPageMargins(left0.5,right0.5,top0.75,bottom0.75)# 重复第1行标题ws.print_title_rows1:1# 页脚页码ws.oddFooter.center.text第 P 页 / 共 N 页wb.save(file_path)returnf已设置:{os.path.basename(file_path)}# 在影刀中遍历文件夹调用folderrC:\Reports\2026年7月forfinos.listdir(folder):iff.endswith(.xlsx)andnotf.startswith(~$):resultsetup_print_format(os.path.join(folder,f))print(result)有什么坑坑1fitToPage不生效设置了fitToWidth1但打印出来还是多列分页——这是因为fitToPage属性没开# 错误只设了fitToWidth但没开fitToPagews.page_setup.fitToWidth1# 单独设没用# 正确必须同时开启fitToPagews.sheet_properties.pageSetUpPr.fitToPageTrue# 这行才是开关ws.page_setup.fitToWidth1ws.page_setup.fitToHeight0坑2print_area覆盖了数据动态设置打印区域时如果max_row算出来的值比实际数据行少比如中间有空行导致max_row不准会截断数据。更安全的做法# 不要用max_row而是找最后一行有数据的行last_row0forrowinws.iter_rows():forcellinrow:ifcell.valueisnotNone:ifcell.rowlast_row:[video(video-WrkTJuc1-1783501122389)(type-csdn)(url-https://live.csdn.net/v/embed/526817)(image-https://v-blog.csdnimg.cn/asset/1d3c3709da119dd8c13ab01e9b282520/cover/Cover0.jpg)(title-TEMU店群矩阵自动化运营核价报活动)]last_rowcell.row ws.print_areafA1:F{last_row}坑3openpyxl设置的打印格式在WPS中不显示openpyxl写入的打印设置纸张方向、缩放等存储在xml节点里WPS某些版本读不到fitToPage属性。如果目标用户用WPS建议用win32com直接操作Excelimportwin32com.client excelwin32com.client.Dispatch(Excel.Application)excel.VisibleFalsewbexcel.Workbooks.Open(rC:\Reports\sales_report.xlsx)wswb.ActiveSheet# win32com方式WPS和Excel都认ws.PageSetup.Orientation2# 2横向1纵向ws.PageSetup.ZoomFalsews.PageSetup.FitToPagesWide1ws.PageSetup.FitToPagesTallFalsews.PageSetup.PrintAreaA1:F50ws.PageSetup.PrintTitleRows$1:$1wb.Save()wb.Close()excel.Quit()坑4页眉页脚中文字符显示乱码openpyxl写中文页眉页脚时某些Excel版本读取后乱码。原因是页眉页脚的编码和单元格不同。解决方案# 不要直接写中文用Excel的转义方式# 或者干脆只写ASCII字符ws.oddFooter.left.textConfidentialws.oddFooter.center.textPage P of N坑5打印区域清除如果之前设过打印区域现在想清除它改为打印全部内容# 设为None清除打印区域ws.print_areaNone# 注意设为空字符串不会清除会报错# ws.print_area # 错误