Requisitos para Saídas
Todos os arquivos Excel
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 Modelos Existentes (ao atualizar modelos)
- Estude e combine EXATAMENTE o formato, estilo e convenções existentes ao modificar arquivos
- Nunca imponha formatação padronizada em arquivos com padrões estabelecidos
- As convenções de modelo existentes SEMPRE substituem estas diretrizes
Modelos financeiros
Padrões de Codificação por Cores
A menos que declarado de outra forma pelo usuário ou modelo existente
Convenções de Cores Padrão da Indústria
- Texto azul (RGB: 0,0,255): Entradas codificadas e números que os usuários mudarã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 da mesma pasta de trabalho
- Texto vermelho (RGB: 255,0,0): Links externos para outros arquivos
- Fundo amarelo (RGB: 255,255,0): Premissas principais precisando de atenção ou células que precisam ser atualizadas
Padrões de Formatação de Números
Regras de Formato Necessárias
- Anos: Formate como cadeias de texto (por exemplo, "2024" não "2.024")
- Moeda: Use o formato $#.##0; SEMPRE especifique unidades nos cabeçalhos ("Receita ($mm)")
- Zeros: Use formatação de número para tornar todos os zeros "-", incluindo porcentagens (por exemplo, "$#.##0;($#.##0);-")
- Porcentagens: Padrão para formato 0,0% (uma casa decimal)
- Múltiplos: Formate como 0,0x para múltiplos de avaliação (EV/EBITDA, P/L)
- Números negativos: Use parênteses (123) não menos -123
Regras de Construção de Fórmulas
Colocação de Premissas
- Coloque TODAS as premissas (taxas de crescimento, margens, múltiplos, etc.) em células de premissa 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 Erro de Fórmula
- Verifique se todas as referências de célula estão corretas
- Verifique se há erros off-by-one em intervalos
- Garanta fórmulas consistentes em todos os períodos de projeção
- Teste com casos extremos (valores zero, números negativos)
- Verifique se não há referências circulares não intencionais
Requisitos de Documentação para Hardcodes
- Comente ou coloque em células ao lado (se fim da tabela). Formato: "Fonte: [Sistema/Documento], [Data], [Referência Específica], [URL se aplicável]"
- Exemplos:
- "Fonte: Empresa 10-K, AF2024, Página 45, Nota de Receita, [URL SEC EDGAR]"
- "Fonte: Empresa 10-Q, T2 2025, Exposição 99.1, [URL SEC EDGAR]"
- "Fonte: Terminal Bloomberg, 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 para você criar, editar ou analisar o conteúdo de um arquivo .xlsx. Você tem diferentes ferramentas e fluxos de trabalho disponíveis para diferentes tarefas.
Requisitos Importantes
LibreOffice Necessário para Recálculo de Fórmula: Você pode assumir que o LibreOffice está instalado para recalcular valores de fórmula usando o script recalc.py. O script configura automaticamente o LibreOffice na primeira execução.
Lendo e analisando dados
Análise de dados com pandas
Para análise de dados, visualização e operações básicas, use pandas, que fornece recursos poderosos 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() # Info da coluna
df.describe() # Estatísticas
# Escrever Excel
df.to_excel('output.xlsx', index=False)
Fluxos de Trabalho de Arquivo Excel
CRÍTICO: Use Fórmulas, Não Valores Codificados
Sempre use fórmulas do Excel em vez de calcular valores em Python e codificá-los. Isso garante que a planilha permaneça dinâmica e atualizável.
❌ ERRADO - Codificando Valores Calculados
# Ruim: Calculando em Python e codificando resultado
total = df['Sales'].sum()
sheet['B10'] = total # Codifica 5000
# Ruim: Computando 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 o 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, porcentagens, índices, diferenças, etc. A planilha deve ser capaz de recalcular quando os dados de origem mudam.
Fluxo de Trabalho Comum
- Escolha a ferramenta: pandas para dados, openpyxl para fórmulas/formatação
- Criar/Carregar: Crie nova pasta de trabalho ou carregue arquivo existente
- Modificar: Adicione/edite dados, fórmulas e formatação
- Salvar: Escreva no arquivo
- Recalcular fórmulas (OBRIGATÓRIO SE USAR FÓRMULAS): Use o script recalc.py
python recalc.py output.xlsx
- Verificar e corrigir quaisquer erros:
- O script retorna JSON com detalhes do erro
- Se
status for errors_found, verifique error_summary para tipos de erro e locais específicos
- Corrija os erros identificados e recalcule novamente
- Erros comuns para corrigir:
#REF!: Referências de célula inválidas
#DIV/0!: Divisão por zero
#VALUE!: Tipo de dados errado na 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) # Excluir coluna 3
# Adicionar nova planilha
new_sheet = wb.create_sheet('NewSheet')
new_sheet['A1'] = 'Dados'
wb.save('modified.xlsx')
Recalculando fórmulas
Arquivos Excel criados ou modificados pelo openpyxl contêm fórmulas como cadeias de caracteres, mas não valores calculados. Use o script recalc.py fornecido para recalcular fórmulas:
python recalc.py <excel_file> [timeout_seconds]
Exemplo:
python recalc.py output.xlsx 30
O script:
- Configura automaticamente macro LibreOffice na primeira execução
- Recalcula todas as fórmulas em todas as planilhas
- Verifica TODAS as células quanto a erros do Excel (#REF!, #DIV/0!, etc.)
- Retorna JSON com locais e contagens de erro detalhados
- Funciona em Linux e macOS
Lista 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 a saída do recalc.py
O script retorna JSON com detalhes do 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": {
// Apenas presente se erros encontrados
"#REF!": {
"count": 2,
"locations": ["Sheet1!B5", "Sheet1!C10"]
}
}
}
Melhores 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
- Os índices de célula são baseados em 1 (linha=1, coluna=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, as fórmulas são substituídas por valores e permanentemente perdidas
- 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 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'])
- Lide com datas corretamente:
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 instruções de impressão desnecessárias
Para os próprios arquivos Excel:
- Adicione comentários às células com fórmulas complexas ou premissas importantes
- Documente fontes de dados para valores codificados
- Inclua notas para cálculos principais e seções de modelo
1---2name: xlsx3description: Criação, edição e análise abrangente de planilhas com suporte para fórmulas, formatação, análise de dados e visualização. Quando o Claude precisar trabalhar com planilhas (.xlsx, .xlsm, .csv, .tsv, etc) para: (1) Criar novas planilhas com fórmulas e formatação, (2) Ler ou analisar dados, (3) Modificar planilhas existentes preservando fórmulas, (4) Análise de dados e visualização em planilhas, ou (5) Recalcular fórmulas4license: Proprietário. LICENSE.txt tem termos completos5---67# Requisitos para Saídas89## Todos os arquivos Excel1011### Zero Erros de Fórmula1213- Todo modelo Excel DEVE ser entregue com ZERO erros de fórmula (#REF!, #DIV/0!, #VALUE!, #N/A, #NAME?)1415### Preservar Modelos Existentes (ao atualizar modelos)1617- Estude e combine EXATAMENTE o formato, estilo e convenções existentes ao modificar arquivos18- Nunca imponha formatação padronizada em arquivos com padrões estabelecidos19- As convenções de modelo existentes SEMPRE substituem estas diretrizes2021## Modelos financeiros2223### Padrões de Codificação por Cores2425A menos que declarado de outra forma pelo usuário ou modelo existente2627#### Convenções de Cores Padrão da Indústria2829- **Texto azul (RGB: 0,0,255)**: Entradas codificadas e números que os usuários mudarão para cenários30- **Texto preto (RGB: 0,0,0)**: TODAS as fórmulas e cálculos31- **Texto verde (RGB: 0,128,0)**: Links puxando de outras planilhas dentro da mesma pasta de trabalho32- **Texto vermelho (RGB: 255,0,0)**: Links externos para outros arquivos33- **Fundo amarelo (RGB: 255,255,0)**: Premissas principais precisando de atenção ou células que precisam ser atualizadas3435### Padrões de Formatação de Números3637#### Regras de Formato Necessárias3839- **Anos**: Formate como cadeias de texto (por exemplo, "2024" não "2.024")40- **Moeda**: Use o formato $#.##0; SEMPRE especifique unidades nos cabeçalhos ("Receita ($mm)")41- **Zeros**: Use formatação de número para tornar todos os zeros "-", incluindo porcentagens (por exemplo, "$#.##0;($#.##0);-")42- **Porcentagens**: Padrão para formato 0,0% (uma casa decimal)43- **Múltiplos**: Formate como 0,0x para múltiplos de avaliação (EV/EBITDA, P/L)44- **Números negativos**: Use parênteses (123) não menos -1234546### Regras de Construção de Fórmulas4748#### Colocação de Premissas4950- Coloque TODAS as premissas (taxas de crescimento, margens, múltiplos, etc.) em células de premissa separadas51- Use referências de célula em vez de valores codificados em fórmulas52- Exemplo: Use =B5*(1+$B$6) em vez de =B5*1.055354#### Prevenção de Erro de Fórmula5556- Verifique se todas as referências de célula estão corretas57- Verifique se há erros off-by-one em intervalos58- Garanta fórmulas consistentes em todos os períodos de projeção59- Teste com casos extremos (valores zero, números negativos)60- Verifique se não há referências circulares não intencionais6162#### Requisitos de Documentação para Hardcodes6364- Comente ou coloque em células ao lado (se fim da tabela). Formato: "Fonte: [Sistema/Documento], [Data], [Referência Específica], [URL se aplicável]"65- Exemplos:66 - "Fonte: Empresa 10-K, AF2024, Página 45, Nota de Receita, [URL SEC EDGAR]"67 - "Fonte: Empresa 10-Q, T2 2025, Exposição 99.1, [URL SEC EDGAR]"68 - "Fonte: Terminal Bloomberg, 15/08/2025, AAPL US Equity"69 - "Fonte: FactSet, 20/08/2025, Tela de Estimativas de Consenso"7071# XLSX: criação, edição e análise7273## Visão Geral7475Um usuário pode pedir para você criar, editar ou analisar o conteúdo de um arquivo .xlsx. Você tem diferentes ferramentas e fluxos de trabalho disponíveis para diferentes tarefas.7677## Requisitos Importantes7879**LibreOffice Necessário para Recálculo de Fórmula**: Você pode assumir que o LibreOffice está instalado para recalcular valores de fórmula usando o script `recalc.py`. O script configura automaticamente o LibreOffice na primeira execução.8081## Lendo e analisando dados8283### Análise de dados com pandas8485Para análise de dados, visualização e operações básicas, use **pandas**, que fornece recursos poderosos de manipulação de dados:8687```python88import pandas as pd8990# Ler Excel91df = pd.read_excel('file.xlsx') # Padrão: primeira planilha92all_sheets = pd.read_excel('file.xlsx', sheet_name=None) # Todas as planilhas como dict9394# Analisar95df.head() # Visualizar dados96df.info() # Info da coluna97df.describe() # Estatísticas9899# Escrever Excel100df.to_excel('output.xlsx', index=False)101```102103## Fluxos de Trabalho de Arquivo Excel104105## CRÍTICO: Use Fórmulas, Não Valores Codificados106107**Sempre use fórmulas do Excel em vez de calcular valores em Python e codificá-los.** Isso garante que a planilha permaneça dinâmica e atualizável.108109### ❌ ERRADO - Codificando Valores Calculados110111```python112# Ruim: Calculando em Python e codificando resultado113total = df['Sales'].sum()114sheet['B10'] = total # Codifica 5000115116# Ruim: Computando taxa de crescimento em Python117growth = (df.iloc[-1]['Revenue'] - df.iloc[0]['Revenue']) / df.iloc[0]['Revenue']118sheet['C5'] = growth # Codifica 0.15119120# Ruim: Cálculo Python para média121avg = sum(values) / len(values)122sheet['D20'] = avg # Codifica 42.5123```124125### ✅ CORRETO - Usando Fórmulas Excel126127```python128# Bom: Deixe o Excel calcular a soma129sheet['B10'] = '=SUM(B2:B9)'130131# Bom: Taxa de crescimento como fórmula Excel132sheet['C5'] = '=(C4-C2)/C2'133134# Bom: Média usando função Excel135sheet['D20'] = '=AVERAGE(D2:D19)'136```137138Isso se aplica a TODOS os cálculos - totais, porcentagens, índices, diferenças, etc. A planilha deve ser capaz de recalcular quando os dados de origem mudam.139140## Fluxo de Trabalho Comum1411421. **Escolha a ferramenta**: pandas para dados, openpyxl para fórmulas/formatação1432. **Criar/Carregar**: Crie nova pasta de trabalho ou carregue arquivo existente1443. **Modificar**: Adicione/edite dados, fórmulas e formatação1454. **Salvar**: Escreva no arquivo1465. **Recalcular fórmulas (OBRIGATÓRIO SE USAR FÓRMULAS)**: Use o script recalc.py147 ```bash148 python recalc.py output.xlsx149 ```1506. **Verificar e corrigir quaisquer erros**:151 - O script retorna JSON com detalhes do erro152 - Se `status` for `errors_found`, verifique `error_summary` para tipos de erro e locais específicos153 - Corrija os erros identificados e recalcule novamente154 - Erros comuns para corrigir:155 - `#REF!`: Referências de célula inválidas156 - `#DIV/0!`: Divisão por zero157 - `#VALUE!`: Tipo de dados errado na fórmula158 - `#NAME?`: Nome de fórmula não reconhecido159160### Criando novos arquivos Excel161162```python163# Usando openpyxl para fórmulas e formatação164from openpyxl import Workbook165from openpyxl.styles import Font, PatternFill, Alignment166167wb = Workbook()168sheet = wb.active169170# Adicionar dados171sheet['A1'] = 'Hello'172sheet['B1'] = 'World'173sheet.append(['Row', 'of', 'data'])174175# Adicionar fórmula176sheet['B2'] = '=SUM(A1:A10)'177178# Formatação179sheet['A1'].font = Font(bold=True, color='FF0000')180sheet['A1'].fill = PatternFill('solid', start_color='FFFF00')181sheet['A1'].alignment = Alignment(horizontal='center')182183# Largura da coluna184sheet.column_dimensions['A'].width = 20185186wb.save('output.xlsx')187```188189### Editando arquivos Excel existentes190191```python192# Usando openpyxl para preservar fórmulas e formatação193from openpyxl import load_workbook194195# Carregar arquivo existente196wb = load_workbook('existing.xlsx')197sheet = wb.active # ou wb['SheetName'] para planilha específica198199# Trabalhando com múltiplas planilhas200for sheet_name in wb.sheetnames:201 sheet = wb[sheet_name]202 print(f"Planilha: {sheet_name}")203204# Modificar células205sheet['A1'] = 'Novo Valor'206sheet.insert_rows(2) # Inserir linha na posição 2207sheet.delete_cols(3) # Excluir coluna 3208209# Adicionar nova planilha210new_sheet = wb.create_sheet('NewSheet')211new_sheet['A1'] = 'Dados'212213wb.save('modified.xlsx')214```215216## Recalculando fórmulas217218Arquivos Excel criados ou modificados pelo openpyxl contêm fórmulas como cadeias de caracteres, mas não valores calculados. Use o script `recalc.py` fornecido para recalcular fórmulas:219220```bash221python recalc.py <excel_file> [timeout_seconds]222```223224Exemplo:225226```bash227python recalc.py output.xlsx 30228```229230O script:231232- Configura automaticamente macro LibreOffice na primeira execução233- Recalcula todas as fórmulas em todas as planilhas234- Verifica TODAS as células quanto a erros do Excel (#REF!, #DIV/0!, etc.)235- Retorna JSON com locais e contagens de erro detalhados236- Funciona em Linux e macOS237238## Lista de Verificação de Fórmula239240Verificações rápidas para garantir que as fórmulas funcionem corretamente:241242### Verificação Essencial243244- [ ] **Teste 2-3 referências de amostra**: Verifique se elas puxam valores corretos antes de construir o modelo completo245- [ ] **Mapeamento de colunas**: Confirme se as colunas do Excel correspondem (por exemplo, coluna 64 = BL, não BK)246- [ ] **Deslocamento de linha**: Lembre-se de que as linhas do Excel são indexadas em 1 (linha DataFrame 5 = linha Excel 6)247248### Armadilhas Comuns249250- [ ] **Manipulação de NaN**: Verifique se há valores nulos com `pd.notna()`251- [ ] **Colunas da extrema direita**: Dados AF geralmente em colunas 50+252- [ ] **Múltiplas correspondências**: Pesquise todas as ocorrências, não apenas a primeira253- [ ] **Divisão por zero**: Verifique denominadores antes de usar `/` em fórmulas (#DIV/0!)254- [ ] **Referências erradas**: Verifique se todas as referências de célula apontam para as células pretendidas (#REF!)255- [ ] **Referências entre planilhas**: Use o formato correto (Planilha1!A1) para vincular planilhas256257### Estratégia de Teste de Fórmula258259- [ ] **Comece pequeno**: Teste fórmulas em 2-3 células antes de aplicar amplamente260- [ ] **Verifique dependências**: Verifique se todas as células referenciadas em fórmulas existem261- [ ] **Teste casos extremos**: Inclua zero, negativo e valores muito grandes262263### Interpretando a saída do recalc.py264265O script retorna JSON com detalhes do erro:266267```json268{269 "status": "success", // ou "errors_found"270 "total_errors": 0, // Contagem total de erros271 "total_formulas": 42, // Número de fórmulas no arquivo272 "error_summary": {273 // Apenas presente se erros encontrados274 "#REF!": {275 "count": 2,276 "locations": ["Sheet1!B5", "Sheet1!C10"]277 }278 }279}280```281282## Melhores Práticas283284### Seleção de Biblioteca285286- **pandas**: Melhor para análise de dados, operações em massa e exportação de dados simples287- **openpyxl**: Melhor para formatação complexa, fórmulas e recursos específicos do Excel288289### Trabalhando com openpyxl290291- Os índices de célula são baseados em 1 (linha=1, coluna=1 refere-se à célula A1)292- Use `data_only=True` para ler valores calculados: `load_workbook('file.xlsx', data_only=True)`293- **Aviso**: Se aberto com `data_only=True` e salvo, as fórmulas são substituídas por valores e permanentemente perdidas294- Para arquivos grandes: Use `read_only=True` para leitura ou `write_only=True` para escrita295- Fórmulas são preservadas, mas não avaliadas - use recalc.py para atualizar valores296297### Trabalhando com pandas298299- Especifique tipos de dados para evitar problemas de inferência: `pd.read_excel('file.xlsx', dtype={'id': str})`300- Para arquivos grandes, leia colunas específicas: `pd.read_excel('file.xlsx', usecols=['A', 'C', 'E'])`301- Lide com datas corretamente: `pd.read_excel('file.xlsx', parse_dates=['date_column'])`302303## Diretrizes de Estilo de Código304305**IMPORTANTE**: Ao gerar código Python para operações Excel:306307- Escreva código Python mínimo e conciso, sem comentários desnecessários308- Evite nomes de variáveis verbosos e operações redundantes309- Evite instruções de impressão desnecessárias310311**Para os próprios arquivos Excel**:312313- Adicione comentários às células com fórmulas complexas ou premissas importantes314- Documente fontes de dados para valores codificados315- Inclua notas para cálculos principais e seções de modelo