名称: excel电子表格 描述: 使用openpyxl通过Bedrock Code Interpreter创建、修改和管理Excel电子表格。
Excel电子表格
何时使用
| 工具 | 使用时机 |
|---|---|
create_excel_spreadsheet |
用户要求创建/生成新电子表格时 |
modify_excel_spreadsheet |
用户要求编辑/更新现有电子表格时 |
list_my_excel_spreadsheets |
用户询问可用的电子表格时 |
read_excel_spreadsheet |
用户想要下载或读取电子表格内容时 |
preview_excel_sheets |
编辑前检查实际工作表外观时 |
工作流程
- 修改前:调用
preview_excel_sheets检查当前布局。 - 创建/修改后:调用
preview_excel_sheets验证。 - 按顺序运行工具(切勿并行)以防止文件竞争条件。
专业格式化
- 字体:除非现有模板指定其他字体,否则所有单元格使用Arial字体。
- 负数:括号格式
(1,234)— 不是减号-1,234。 - 货币:
$#,##0格式。在标题中指定单位(例如,“收入($百万)”)。 - 百分比:
0.0%格式(一位小数)。 - 年份:格式化为文本(
"2024"而不是"2,024")。 - 零值:使用自定义数字格式显示为
"-"。
# 示例:专业数字格式化
from openpyxl.styles import numbers
ws['B2'].number_format = '$#,##0' # 货币
ws['C2'].number_format = '0.0%' # 百分比
ws['D2'].number_format = '#,##0;(#,##0)' # 负数用括号
ws['E2'].number_format = '@' # 年份作为文本
ws['F2'].number_format = '#,##0;(#,##0);"-"' # 零值显示为短横线
财务模型颜色编码
构建财务模型时,应用以下约定:
| 颜色 | 十六进制 | 用途 |
|---|---|---|
| 蓝色文本 | 0000FF |
硬编码输入和假设 |
| 黑色文本 | 000000 |
所有公式和计算 |
| 绿色文本 | 008000 |
从其他工作表拉取链接 |
| 黄色背景 | FFFF00 |
需要关注的关键假设 |
from openpyxl.styles import Font, PatternFill
ws['B2'].font = Font(name='Arial', color='0000FF') # 蓝色:输入
ws['B3'].font = Font(name='Arial', color='000000') # 黑色:公式
ws['B4'].font = Font(name='Arial', color='008000') # 绿色:跨工作表链接
ws['B5'].fill = PatternFill('solid', fgColor='FFFF00') # 黄色背景:关键假设
图像
from openpyxl.drawing.image import Image
ws.add_image(Image('file.png'), 'E1')
代码规则
- 工作簿预先初始化为
wb = Workbook(),活动工作表为ws = wb.active(创建时),或加载为wb(修改时)。不要包含Workbook()或wb.save()。 - 可用库:openpyxl、matplotlib、pandas、numpy(seaborn不可用)
- 始终使用Excel公式,切勿硬编码计算值。
- 错误:
ws['B10'] = total - 正确:
ws['B10'] = '=SUM(B2:B9)'
- 错误:
- 将假设放在单独的单元格中,在公式中引用它们(例如,
=B5*(1+$B$6)而不是=B5*1.05)。 - 避免循环引用。
- 文件名:仅使用字母、数字、连字符。
工具参考
create_excel_spreadsheet
使用openpyxl代码创建新的Excel电子表格。
| 参数 | 类型 | 是否必需 | 描述 |
|---|---|---|---|
python_code |
str | 是 | 使用openpyxl的Python代码(参见上面的代码规则) |
spreadsheet_name |
str | 是 | 文件名(不带扩展名,仅使用字母、数字、连字符) |
示例tool_input:
{
"python_code": "ws.title = 'Sales'
ws['A1'] = 'Quarter'
ws['B1'] = 'Revenue'
for i, (q, r) in enumerate(zip(['Q1','Q2','Q3','Q4'], [100,150,130,180]), start=2):
ws[f'A{i}'] = q
ws[f'B{i}'] = r",
"spreadsheet_name": "quarterly-sales"
}
警告:参数是spreadsheet_name,不是filename或name。
modify_excel_spreadsheet
修改现有电子表格并用新名称保存。
| 参数 | 类型 | 是否必需 | 描述 |
|---|---|---|---|
source_name |
str | 是 | 现有电子表格名称(不带.xlsx) |
output_name |
str | 是 | 新输出名称(必须与源不同) |
python_code |
str | 是 | 修改电子表格的Python代码 |
示例tool_input:
{
"source_name": "quarterly-sales",
"output_name": "quarterly-sales-v2",
"python_code": "ws = wb.active
ws['B6'] = '=SUM(B2:B5)'"
}
list_my_excel_spreadsheets
列出工作空间中的所有电子表格。无需参数。
read_excel_spreadsheet
检索特定电子表格以下载。
| 参数 | 类型 | 是否必需 |
|---|---|---|
spreadsheet_name |
str | 是 |
preview_excel_sheets
获取工作表截图以进行视觉检查后再编辑。
| 参数 | 类型 | 是否必需 | 描述 |
|---|---|---|---|
spreadsheet_name |
str | 是 | 电子表格名称(不带扩展名) |
sheet_names |
list[str] | 是 | 要预览的工作表名称(空列表[]表示所有工作表) |