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órmulas
A menos que declarado de outra forma pelo usuário ou modelo existente
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.
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.
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)
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.
# 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
# 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.
python recalc.py output.xlsx
status for errors_found, verifique error_summary para tipos de erro e locais específicos#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# 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')
# 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')
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:
Verificações rápidas para garantir que as fórmulas funcionem corretamente:
pd.notna()/ em fórmulas (#DIV/0!)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"]
}
}
}
data_only=True para ler valores calculados: load_workbook('file.xlsx', data_only=True)data_only=True e salvo, as fórmulas são substituídas por valores e permanentemente perdidasread_only=True para leitura ou write_only=True para escritapd.read_excel('file.xlsx', dtype={'id': str})pd.read_excel('file.xlsx', usecols=['A', 'C', 'E'])pd.read_excel('file.xlsx', parse_dates=['date_column'])IMPORTANTE: Ao gerar código Python para operações Excel:
Para os próprios arquivos Excel: