Requisitos para Saídas
Todos os arquivos Excel
Fonte Profissional
- Use uma fonte consistente e profissional (por exemplo, Arial, Times New Roman) para todos os entregáveis, a menos que o usuário instruya de outra forma
Zero Erros de Fórmula
- Todo modelo Excel DEVE ser entregue com ZERO erros de fórmula (#REF!, #DIV/0!, #VALUE!, #N/A, #NAME?)
Preservar Templates Existentes (ao atualizar templates)
- Estude e CORRESPONDA EXATAMENTE ao formato, estilo e convenções existentes ao modificar arquivos
- Nunca imponha formatação padronizada em arquivos com padrões estabelecidos
- As convenções de template existentes SEMPRE superam essas diretrizes
Modelos financeiros
Padrões de Codificação por Cores
A menos que o usuário declare o contrário ou template existente
Convenções de Cor Padrão da Indústria
- Texto azul (RGB: 0,0,255): Entradas codificadas e números que os usuários alterarão para cenários
- Texto preto (RGB: 0,0,0): TODAS as fórmulas e cálculos
- Texto verde (RGB: 0,128,0): Links puxando de outras planilhas dentro do mesmo workbook
- Texto vermelho (RGB: 255,0,0): Links externos para outros arquivos
- Fundo amarelo (RGB: 255,255,0): Principais premissas que precisam de atenção ou células que precisam ser atualizadas
Padrões de Formatação de Números
Regras de Formato Obrigatórias
- Anos: Formatar como strings de texto (ex: "2024" não "2.024")
- Moeda: Use formato $#,##0; SEMPRE especifique unidades em cabeçalhos ("Receita (R$ mm)")
- Zeros: Use formatação de números para fazer todos os zeros "-", incluindo percentuais (ex: "$#,##0;($#,##0);-")
- Percentuais: Padrão de formato 0,0% (uma decimal)
- Múltiplos: Formatar como 0,0x para múltiplos de avaliação (EV/EBITDA, P/E)
- Números negativos: Use parênteses (123) não menos -123
Regras de Construção de Fórmula
Posicionamento de Premissas
- Coloque TODAS as premissas (taxas de crescimento, margens, múltiplos, etc.) em células de premissas separadas
- Use referências de célula em vez de valores codificados em fórmulas
- Exemplo: Use =B5*(1+$B$6) em vez de =B5*1,05
Prevenção de Erros de Fórmula
- Verifique que todas as referências de célula estão corretas
- Verifique erros de off-by-one em intervalos
- Garanta formulas consistentes em todos os períodos de projeção
- Teste com casos extremos (valores zero, números negativos)
- Verifique que não há referências circulares não intencionais
Requisitos de Documentação para Valores Codificados
- Comente ou em células ao lado (se no final da tabela). Formato: "Fonte: [Sistema/Documento], [Data], [Referência Específica], [URL se aplicável]"
- Exemplos:
- "Fonte: 10-K da Empresa, FY2024, Página 45, Nota de Receita, [URL SEC EDGAR]"
- "Fonte: 10-Q da Empresa, Q2 2025, Anexo 99.1, [URL SEC EDGAR]"
- "Fonte: Bloomberg Terminal, 15/08/2025, AAPL US Equity"
- "Fonte: FactSet, 20/08/2025, Tela de Estimativas de Consenso"
XLSX criação, edição e análise
Visão Geral
Um usuário pode pedir que você crie, edite ou analise o conteúdo de um arquivo .xlsx. Você tem diferentes ferramentas e workflows disponíveis para diferentes tarefas.
Requisitos Importantes
LibreOffice Necessário para Recalcular Fórmulas: Você pode assumir que LibreOffice está instalado para recalcular valores de fórmula usando o script scripts/recalc.py. O script configura automaticamente o LibreOffice na primeira execução, inclusive em ambientes sandboxed onde sockets Unix são restritos (tratados por scripts/office/soffice.py)
Leitura e análise de dados
Análise de dados com pandas
Para análise de dados, visualização e operações básicas, use pandas, que oferece poderosos recursos de manipulação de dados:
import pandas as pd
# Ler Excel
df = pd.read_excel('file.xlsx') # Padrão: primeira planilha
all_sheets = pd.read_excel('file.xlsx', sheet_name=None) # Todas as planilhas como dict
# Analisar
df.head() # Visualizar dados
df.info() # Informações de coluna
df.describe() # Estatísticas
# Escrever Excel
df.to_excel('output.xlsx', index=False)
Workflows de Arquivo Excel
CRÍTICO: Use Fórmulas, Não Valores Codificados
Sempre use fórmulas Excel em vez de calcular valores em Python e codificá-los. Isso garante que a planilha permaneça dinâmica e atualizável.
❌ ERRADO - Codificação de Valores Calculados
# Ruim: Calcular em Python e codificar resultado
total = df['Sales'].sum()
sheet['B10'] = total # Codifica 5000
# Ruim: Computar taxa de crescimento em Python
growth = (df.iloc[-1]['Revenue'] - df.iloc[0]['Revenue']) / df.iloc[0]['Revenue']
sheet['C5'] = growth # Codifica 0,15
# Ruim: Cálculo Python para média
avg = sum(values) / len(values)
sheet['D20'] = avg # Codifica 42,5
✅ CORRETO - Usando Fórmulas Excel
# Bom: Deixe Excel calcular a soma
sheet['B10'] = '=SUM(B2:B9)'
# Bom: Taxa de crescimento como fórmula Excel
sheet['C5'] = '=(C4-C2)/C2'
# Bom: Média usando função Excel
sheet['D20'] = '=AVERAGE(D2:D19)'
Isso se aplica a TODOS os cálculos — totais, percentuais, razões, diferenças, etc. A planilha deve ser capaz de recalcular quando os dados de origem mudam.
Workflow Comum
- Escolher ferramenta: pandas para dados, openpyxl para fórmulas/formatação
- Criar/Carregar: Criar novo workbook ou carregar arquivo existente
- Modificar: Adicionar/editar dados, fórmulas e formatação
- Salvar: Escrever em arquivo
- Recalcular fórmulas (OBRIGATÓRIO SE USAR FÓRMULAS): Use o script scripts/recalc.py
python scripts/recalc.py output.xlsx
- Verificar e corrigir erros:
- O script retorna JSON com detalhes de erro
- Se
status for errors_found, verifique error_summary para tipos de erro específicos e locais
- Corrija os erros identificados e recalcule novamente
- Erros comuns a corrigir:
#REF!: Referências de célula inválidas
#DIV/0!: Divisão por zero
#VALUE!: Tipo de dados errado em fórmula
#NAME?: Nome de fórmula não reconhecido
Criando novos arquivos Excel
# Usando openpyxl para fórmulas e formatação
from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill, Alignment
wb = Workbook()
sheet = wb.active
# Adicionar dados
sheet['A1'] = 'Hello'
sheet['B1'] = 'World'
sheet.append(['Row', 'of', 'data'])
# Adicionar fórmula
sheet['B2'] = '=SUM(A1:A10)'
# Formatação
sheet['A1'].font = Font(bold=True, color='FF0000')
sheet['A1'].fill = PatternFill('solid', start_color='FFFF00')
sheet['A1'].alignment = Alignment(horizontal='center')
# Largura da coluna
sheet.column_dimensions['A'].width = 20
wb.save('output.xlsx')
Editando arquivos Excel existentes
# Usando openpyxl para preservar fórmulas e formatação
from openpyxl import load_workbook
# Carregar arquivo existente
wb = load_workbook('existing.xlsx')
sheet = wb.active # ou wb['SheetName'] para planilha específica
# Trabalhando com múltiplas planilhas
for sheet_name in wb.sheetnames:
sheet = wb[sheet_name]
print(f"Planilha: {sheet_name}")
# Modificar células
sheet['A1'] = 'Novo Valor'
sheet.insert_rows(2) # Inserir linha na posição 2
sheet.delete_cols(3) # Deletar coluna 3
# Adicionar nova planilha
new_sheet = wb.create_sheet('NovaPlaniha')
new_sheet['A1'] = 'Dados'
wb.save('modified.xlsx')
Recalculando fórmulas
Arquivos Excel criados ou modificados por openpyxl contêm fórmulas como strings mas não valores calculados. Use o script fornecido scripts/recalc.py para recalcular fórmulas:
python scripts/recalc.py <excel_file> [timeout_seconds]
Exemplo:
python scripts/recalc.py output.xlsx 30
O script:
- Configura automaticamente macro do LibreOffice na primeira execução
- Recalcula todas as fórmulas em todas as planilhas
- Verifica TODAS as células para erros Excel (#REF!, #DIV/0!, etc.)
- Retorna JSON com locais e contagens de erro detalhadas
- Funciona em Linux e macOS
Checklist de Verificação de Fórmula
Verificações rápidas para garantir que as fórmulas funcionem corretamente:
Verificação Essencial
Armadilhas Comuns
Estratégia de Teste de Fórmula
Interpretando Saída de scripts/recalc.py
O script retorna JSON com detalhes de erro:
{
"status": "success", // ou "errors_found"
"total_errors": 0, // Contagem total de erros
"total_formulas": 42, // Número de fórmulas no arquivo
"error_summary": { // Só presente se erros encontrados
"#REF!": {
"count": 2,
"locations": ["Sheet1!B5", "Sheet1!C10"]
}
}
}
Boas Práticas
Seleção de Biblioteca
- pandas: Melhor para análise de dados, operações em massa e exportação de dados simples
- openpyxl: Melhor para formatação complexa, fórmulas e recursos específicos do Excel
Trabalhando com openpyxl
- Índices de célula são baseados em 1 (row=1, column=1 refere-se à célula A1)
- Use
data_only=True para ler valores calculados: load_workbook('file.xlsx', data_only=True)
- Aviso: Se aberto com
data_only=True e salvo, fórmulas são substituídas por valores e perdidas permanentemente
- Para arquivos grandes: Use
read_only=True para leitura ou write_only=True para escrita
- Fórmulas são preservadas mas não avaliadas — use scripts/recalc.py para atualizar valores
Trabalhando com pandas
- Especifique tipos de dados para evitar problemas de inferência:
pd.read_excel('file.xlsx', dtype={'id': str})
- Para arquivos grandes, leia colunas específicas:
pd.read_excel('file.xlsx', usecols=['A', 'C', 'E'])
- Trate datas adequadamente:
pd.read_excel('file.xlsx', parse_dates=['date_column'])
Diretrizes de Estilo de Código
IMPORTANTE: Ao gerar código Python para operações Excel:
- Escreva código Python mínimo e conciso sem comentários desnecessários
- Evite nomes de variáveis verbosos e operações redundantes
- Evite print statements desnecessários
Para arquivos Excel em si:
- Adicione comentários a células com fórmulas complexas ou premissas importantes
- Documente fontes de dados para valores codificados
- Inclua notas para cálculos-chave e seções de modelo
1---2name: xlsx3description: Use this skill sempre que um arquivo de planilha for a entrada ou saída principal. Isso significa qualquer tarefa em que o usuário queira: abrir, ler, editar ou corrigir um arquivo .xlsx, .xlsm, .csv ou .tsv existente (por exemplo, adicionar colunas, calcular fórmulas, formatar, criar gráficos, limpar dados desorganizados); criar uma nova planilha do zero ou a partir de outras fontes de dados; ou converter entre formatos de arquivo tabular. Dispare especialmente quando o usuário referencia um arquivo de planilha pelo nome ou caminho — mesmo informalmente (como "o xlsx em meus downloads") — e quer que algo seja feito com ele ou produzido a partir dele. Também dispare para limpeza ou reestruturação de arquivos tabulares desorganizados (linhas malformadas, cabeçalhos deslocados, dados inúteis) em planilhas adequadas. O entregável deve ser um arquivo de planilha. NÃO dispare quando o entregável principal for um documento Word, relatório HTML, script Python independente, pipeline de banco de dados ou integração co4license: Proprietário. LICENSE.txt contém os termos completos5---67# Requisitos para Saídas89## Todos os arquivos Excel1011### Fonte Profissional12- Use uma fonte consistente e profissional (por exemplo, Arial, Times New Roman) para todos os entregáveis, a menos que o usuário instruya de outra forma1314### Zero Erros de Fórmula15- Todo modelo Excel DEVE ser entregue com ZERO erros de fórmula (#REF!, #DIV/0!, #VALUE!, #N/A, #NAME?)1617### Preservar Templates Existentes (ao atualizar templates)18- Estude e CORRESPONDA EXATAMENTE ao formato, estilo e convenções existentes ao modificar arquivos19- Nunca imponha formatação padronizada em arquivos com padrões estabelecidos20- As convenções de template existentes SEMPRE superam essas diretrizes2122## Modelos financeiros2324### Padrões de Codificação por Cores25A menos que o usuário declare o contrário ou template existente2627#### Convenções de Cor Padrão da Indústria28- **Texto azul (RGB: 0,0,255)**: Entradas codificadas e números que os usuários alterarão para cenários29- **Texto preto (RGB: 0,0,0)**: TODAS as fórmulas e cálculos30- **Texto verde (RGB: 0,128,0)**: Links puxando de outras planilhas dentro do mesmo workbook31- **Texto vermelho (RGB: 255,0,0)**: Links externos para outros arquivos32- **Fundo amarelo (RGB: 255,255,0)**: Principais premissas que precisam de atenção ou células que precisam ser atualizadas3334### Padrões de Formatação de Números3536#### Regras de Formato Obrigatórias37- **Anos**: Formatar como strings de texto (ex: "2024" não "2.024")38- **Moeda**: Use formato $#,##0; SEMPRE especifique unidades em cabeçalhos ("Receita (R$ mm)")39- **Zeros**: Use formatação de números para fazer todos os zeros "-", incluindo percentuais (ex: "$#,##0;($#,##0);-")40- **Percentuais**: Padrão de formato 0,0% (uma decimal)41- **Múltiplos**: Formatar como 0,0x para múltiplos de avaliação (EV/EBITDA, P/E)42- **Números negativos**: Use parênteses (123) não menos -1234344### Regras de Construção de Fórmula4546#### Posicionamento de Premissas47- Coloque TODAS as premissas (taxas de crescimento, margens, múltiplos, etc.) em células de premissas separadas48- Use referências de célula em vez de valores codificados em fórmulas49- Exemplo: Use =B5*(1+$B$6) em vez de =B5*1,055051#### Prevenção de Erros de Fórmula52- Verifique que todas as referências de célula estão corretas53- Verifique erros de off-by-one em intervalos54- Garanta formulas consistentes em todos os períodos de projeção55- Teste com casos extremos (valores zero, números negativos)56- Verifique que não há referências circulares não intencionais5758#### Requisitos de Documentação para Valores Codificados59- Comente ou em células ao lado (se no final da tabela). Formato: "Fonte: [Sistema/Documento], [Data], [Referência Específica], [URL se aplicável]"60- Exemplos:61 - "Fonte: 10-K da Empresa, FY2024, Página 45, Nota de Receita, [URL SEC EDGAR]"62 - "Fonte: 10-Q da Empresa, Q2 2025, Anexo 99.1, [URL SEC EDGAR]"63 - "Fonte: Bloomberg Terminal, 15/08/2025, AAPL US Equity"64 - "Fonte: FactSet, 20/08/2025, Tela de Estimativas de Consenso"6566# XLSX criação, edição e análise6768## Visão Geral6970Um usuário pode pedir que você crie, edite ou analise o conteúdo de um arquivo .xlsx. Você tem diferentes ferramentas e workflows disponíveis para diferentes tarefas.7172## Requisitos Importantes7374**LibreOffice Necessário para Recalcular Fórmulas**: Você pode assumir que LibreOffice está instalado para recalcular valores de fórmula usando o script `scripts/recalc.py`. O script configura automaticamente o LibreOffice na primeira execução, inclusive em ambientes sandboxed onde sockets Unix são restritos (tratados por `scripts/office/soffice.py`)7576## Leitura e análise de dados7778### Análise de dados com pandas79Para análise de dados, visualização e operações básicas, use **pandas**, que oferece poderosos recursos de manipulação de dados:8081```python82import pandas as pd8384# Ler Excel85df = pd.read_excel('file.xlsx') # Padrão: primeira planilha86all_sheets = pd.read_excel('file.xlsx', sheet_name=None) # Todas as planilhas como dict8788# Analisar89df.head() # Visualizar dados90df.info() # Informações de coluna91df.describe() # Estatísticas9293# Escrever Excel94df.to_excel('output.xlsx', index=False)95```9697## Workflows de Arquivo Excel9899## CRÍTICO: Use Fórmulas, Não Valores Codificados100101**Sempre use fórmulas Excel em vez de calcular valores em Python e codificá-los.** Isso garante que a planilha permaneça dinâmica e atualizável.102103### ❌ ERRADO - Codificação de Valores Calculados104```python105# Ruim: Calcular em Python e codificar resultado106total = df['Sales'].sum()107sheet['B10'] = total # Codifica 5000108109# Ruim: Computar taxa de crescimento em Python110growth = (df.iloc[-1]['Revenue'] - df.iloc[0]['Revenue']) / df.iloc[0]['Revenue']111sheet['C5'] = growth # Codifica 0,15112113# Ruim: Cálculo Python para média114avg = sum(values) / len(values)115sheet['D20'] = avg # Codifica 42,5116```117118### ✅ CORRETO - Usando Fórmulas Excel119```python120# Bom: Deixe Excel calcular a soma121sheet['B10'] = '=SUM(B2:B9)'122123# Bom: Taxa de crescimento como fórmula Excel124sheet['C5'] = '=(C4-C2)/C2'125126# Bom: Média usando função Excel127sheet['D20'] = '=AVERAGE(D2:D19)'128```129130Isso se aplica a TODOS os cálculos — totais, percentuais, razões, diferenças, etc. A planilha deve ser capaz de recalcular quando os dados de origem mudam.131132## Workflow Comum1331. **Escolher ferramenta**: pandas para dados, openpyxl para fórmulas/formatação1342. **Criar/Carregar**: Criar novo workbook ou carregar arquivo existente1353. **Modificar**: Adicionar/editar dados, fórmulas e formatação1364. **Salvar**: Escrever em arquivo1375. **Recalcular fórmulas (OBRIGATÓRIO SE USAR FÓRMULAS)**: Use o script scripts/recalc.py138 ```bash139 python scripts/recalc.py output.xlsx140 ```1416. **Verificar e corrigir erros**: 142 - O script retorna JSON com detalhes de erro143 - Se `status` for `errors_found`, verifique `error_summary` para tipos de erro específicos e locais144 - Corrija os erros identificados e recalcule novamente145 - Erros comuns a corrigir:146 - `#REF!`: Referências de célula inválidas147 - `#DIV/0!`: Divisão por zero148 - `#VALUE!`: Tipo de dados errado em fórmula149 - `#NAME?`: Nome de fórmula não reconhecido150151### Criando novos arquivos Excel152153```python154# Usando openpyxl para fórmulas e formatação155from openpyxl import Workbook156from openpyxl.styles import Font, PatternFill, Alignment157158wb = Workbook()159sheet = wb.active160161# Adicionar dados162sheet['A1'] = 'Hello'163sheet['B1'] = 'World'164sheet.append(['Row', 'of', 'data'])165166# Adicionar fórmula167sheet['B2'] = '=SUM(A1:A10)'168169# Formatação170sheet['A1'].font = Font(bold=True, color='FF0000')171sheet['A1'].fill = PatternFill('solid', start_color='FFFF00')172sheet['A1'].alignment = Alignment(horizontal='center')173174# Largura da coluna175sheet.column_dimensions['A'].width = 20176177wb.save('output.xlsx')178```179180### Editando arquivos Excel existentes181182```python183# Usando openpyxl para preservar fórmulas e formatação184from openpyxl import load_workbook185186# Carregar arquivo existente187wb = load_workbook('existing.xlsx')188sheet = wb.active # ou wb['SheetName'] para planilha específica189190# Trabalhando com múltiplas planilhas191for sheet_name in wb.sheetnames:192 sheet = wb[sheet_name]193 print(f"Planilha: {sheet_name}")194195# Modificar células196sheet['A1'] = 'Novo Valor'197sheet.insert_rows(2) # Inserir linha na posição 2198sheet.delete_cols(3) # Deletar coluna 3199200# Adicionar nova planilha201new_sheet = wb.create_sheet('NovaPlaniha')202new_sheet['A1'] = 'Dados'203204wb.save('modified.xlsx')205```206207## Recalculando fórmulas208209Arquivos Excel criados ou modificados por openpyxl contêm fórmulas como strings mas não valores calculados. Use o script fornecido `scripts/recalc.py` para recalcular fórmulas:210211```bash212python scripts/recalc.py <excel_file> [timeout_seconds]213```214215Exemplo:216```bash217python scripts/recalc.py output.xlsx 30218```219220O script:221- Configura automaticamente macro do LibreOffice na primeira execução222- Recalcula todas as fórmulas em todas as planilhas223- Verifica TODAS as células para erros Excel (#REF!, #DIV/0!, etc.)224- Retorna JSON com locais e contagens de erro detalhadas225- Funciona em Linux e macOS226227## Checklist de Verificação de Fórmula228229Verificações rápidas para garantir que as fórmulas funcionem corretamente:230231### Verificação Essencial232- [ ] **Testar 2-3 referências de amostra**: Verifique se elas puxam valores corretos antes de construir modelo completo233- [ ] **Mapeamento de coluna**: Confirme que colunas Excel correspondem (ex: coluna 64 = BL, não BK)234- [ ] **Offset de linha**: Lembre-se que linhas Excel são indexadas em 1 (linha 5 do DataFrame = linha 6 do Excel)235236### Armadilhas Comuns237- [ ] **Tratamento de NaN**: Verifique valores nulos com `pd.notna()`238- [ ] **Colunas à direita**: Dados de FY frequentemente em colunas 50+239- [ ] **Múltiplas correspondências**: Procure todas as ocorrências, não apenas a primeira240- [ ] **Divisão por zero**: Verifique denominadores antes de usar `/` em fórmulas (#DIV/0!)241- [ ] **Referências erradas**: Verifique que todas as referências de célula apontam para células pretendidas (#REF!)242- [ ] **Referências entre planilhas**: Use formato correto (Sheet1!A1) para lincar planilhas243244### Estratégia de Teste de Fórmula245- [ ] **Comece pequeno**: Teste fórmulas em 2-3 células antes de aplicar amplamente246- [ ] **Verifique dependências**: Verifique que todas as células referenciadas em fórmulas existem247- [ ] **Teste casos extremos**: Inclua zero, negativo e valores muito grandes248249### Interpretando Saída de scripts/recalc.py250O script retorna JSON com detalhes de erro:251```json252{253 "status": "success", // ou "errors_found"254 "total_errors": 0, // Contagem total de erros255 "total_formulas": 42, // Número de fórmulas no arquivo256 "error_summary": { // Só presente se erros encontrados257 "#REF!": {258 "count": 2,259 "locations": ["Sheet1!B5", "Sheet1!C10"]260 }261 }262}263```264265## Boas Práticas266267### Seleção de Biblioteca268- **pandas**: Melhor para análise de dados, operações em massa e exportação de dados simples269- **openpyxl**: Melhor para formatação complexa, fórmulas e recursos específicos do Excel270271### Trabalhando com openpyxl272- Índices de célula são baseados em 1 (row=1, column=1 refere-se à célula A1)273- Use `data_only=True` para ler valores calculados: `load_workbook('file.xlsx', data_only=True)`274- **Aviso**: Se aberto com `data_only=True` e salvo, fórmulas são substituídas por valores e perdidas permanentemente275- Para arquivos grandes: Use `read_only=True` para leitura ou `write_only=True` para escrita276- Fórmulas são preservadas mas não avaliadas — use scripts/recalc.py para atualizar valores277278### Trabalhando com pandas279- Especifique tipos de dados para evitar problemas de inferência: `pd.read_excel('file.xlsx', dtype={'id': str})`280- Para arquivos grandes, leia colunas específicas: `pd.read_excel('file.xlsx', usecols=['A', 'C', 'E'])`281- Trate datas adequadamente: `pd.read_excel('file.xlsx', parse_dates=['date_column'])`282283## Diretrizes de Estilo de Código284**IMPORTANTE**: Ao gerar código Python para operações Excel:285- Escreva código Python mínimo e conciso sem comentários desnecessários286- Evite nomes de variáveis verbosos e operações redundantes287- Evite print statements desnecessários288289**Para arquivos Excel em si**:290- Adicione comentários a células com fórmulas complexas ou premissas importantes291- Documente fontes de dados para valores codificados292- Inclua notas para cálculos-chave e seções de modelo