用途:当使用 openpyxl 创建 Excel 文件时,execute_code_sandbox 可能因沙箱限制、缺少依赖或权限问题失败。本技能提供回退方案:通过 run_shell 执行内联 Python heredoc 脚本,通常能绕过沙箱限制,并支持 openpyxl 的完整功能,包括样式、公式和格式化。
适用时机:沙箱导入或使用 openpyxl 失败;出现缺少包、权限或执行限制错误;需要高级格式(样式、颜色、合并单元格、公式);沙箱多次尝试失败。
使用方式:先尝试 execute_code_sandbox;若出现 ImportError、权限拒绝、写入失败、重试循环、超时等失败迹象,改用 run_shell 执行 python3 << 'EOF' 包裹的脚本。脚本内可创建 Workbook、设置单元格样式、添加数据与公式,最后 wb.save 保存。执行后用 ls -lh 验证文件存在且大小大于 1KB。
最佳实践:使用单引号 heredoc 定界符 << 'EOF' 防止 shell 变量展开;加入 try/except 错误处理;打印成功或错误信息;使用显式或绝对路径保存;脚本保持简洁,复杂逻辑可先写 .py 文件再执行。
高级格式:可设置字体、填充、对齐、边框、列宽行高、合并单元格、多工作表。
限制与排错:openpyxl 未安装时需先 pip install openpyxl;文件未创建需检查工作目录与路径;权限拒绝需确保目标目录可写;大文件超时可增大 run_shell 超时。沙箱更干净但可能受限,heredoc 回退拥有完整文件系统与 stdout/stderr,但非首选。