Trabalhar com fórmulas
Resumo geral
Aspose.Cells FOSS stores formulas as Excel-compatible strings. The library does not evaluate formulas internally – it preserves the expression verbatim in the file, and the spreadsheet application (Excel, LibreOffice Calc, or any compatible reader) computes the result when the file is opened.
Há duas maneiras de colocar uma fórmula numa célula:
- Constructor de células –
ws.cells["A4"] = Cell(None, "=SUM(A1:A3)") .formulapropriedade –ws.cells["A4"].formula = "=SUM(A1:A3)"
Ambas as abordagens armazenam os mesmos dados. O formulário do constructor é compacto quando você está construindo uma folha a partir do zero; o formulários de propriedade são mais naturais quando já tem uma referência para uma célula existente e deseja anexar uma fórmula a ela.
Definir uma fórmula através do Construtor de Células
A Comissão Cell A assinatura do construtor é: Cell(value, formula).Para criar uma pura… célula de fórmula, passar None como o valor e a cadeia de expressões como a segunda argumento:
from aspose.cells_foss import Workbook, Cell
workbook = Workbook()
ws = workbook.worksheets[0]
##Input values
ws.cells["A1"] = Cell(10)
ws.cells["A2"] = Cell(25)
ws.cells["A3"] = Cell(15)
##Formula cell: value=None, formula="=SUM(A1:A3)"
ws.cells["A4"] = Cell(None, "=SUM(A1:A3)")
workbook.save("formula_constructor.xlsx")
print("Saved formula_constructor.xlsx")Configuração value=None torna explícito que a célula não tem valor estático seu O conteúdo exibido é inteiramente proveniente da fórmula.None valor de junto com uma fórmula é permitido, mas incomum; a maioria dos leitores de planilha irá exibir o resultado da fórmula e ignorar o valor armazenado.
Estabelecer uma fórmula através do .formula Propriedade
A atribuir directamente a: cell.formula quando já tem uma referência de célula ou quando: você quer adicionar uma fórmula a uma célula que foi previamente escrita com um valor:
from aspose.cells_foss import Workbook
workbook = Workbook()
ws = workbook.worksheets[0]
##Write input data
for i, val in enumerate([4, 8, 15, 16, 23], start=1):
ws.cells[f"A{i}"].value = val
##Attach a formula to an existing cell reference
cell = ws.cells["B1"]
cell.formula = "=AVERAGE(A1:A5)"
##Or assign directly by address
ws.cells["B2"].formula = "=MAX(A1:A5)"
ws.cells["B3"].formula = "=MIN(A1:A5)"
workbook.save("formula_property.xlsx")
print("Saved formula_property.xlsx")Leitura de uma fórmula
Após escrever uma célula de fórmula, use: .formula para recuperar a cadeia de expressões e a) .value para recuperar qualquer valor estático (se houver) armazenado ao lado dele.
from aspose.cells_foss import Workbook, Cell
workbook = Workbook()
ws = workbook.worksheets[0]
ws.cells["A1"] = Cell(None, "=SUM(B1:B5)")
cell = ws.cells["A1"]
print(cell.formula) # =SUM(B1:B5)
print(cell.value) # None (no static value was set)Na prática, .value é: None para qualquer célula criada com: Cell(None, formula). Se carregar uma pasta de trabalho existente que foi previamente salva com valores calculados armazenados em cache junto a fórmulas, .value pode retornar o último resultado armazenado em cache mas este O comportamento depende de como a aplicação originária salvou o ficheiro e deve ser não ser utilizado para novos cálculos.
Para distinguir uma célula de fórmula de uma celula com valor simples no tempo de execução:
cell = ws.cells["A1"]
if cell.formula:
print(f"Formula cell: {cell.formula}")
else:
print(f"Value cell: {cell.value}")Fórmulas comuns do Excel
A tabela a seguir lista as funções do Excel com frequência usadas, com exemplos de cadeias de fórmulas que pode passar diretamente para Aspose.Cells FOSS .
| Objectivo: | Figura de fórmula: | Notas |
|---|---|---|
| Somar um intervalo | =SUM(A1:A10) | Adiciona todos os valores numéricos no intervalo |
| Medida de um intervalo | =AVERAGE(A1:A10) | Ignora células em branco |
| Valor máximo | =MAX(A1:A10) | Retorna o maior número. |
| Valor mínimo | =MIN(A1:A10) | Retorna o número mais pequeno. |
| Contar células numéricas | =COUNT(A1:A10) | Conta células com valores numéricos apenas |
| Contar células não vazias | =COUNTA(A1:A10) | Contar qualquer célula não em branco |
| Valor condicional | =IF(A1>100,"High","Low") | Formulário de três argumentos: teste, resultado verdadeiro, falso. |
| Busca vertical | =VLOOKUP(D1,A1:B10,2,FALSE) | Compatibilidade exata (FALSE) recomendado. |
| Cordas concatenadas | =CONCATENATE(A1," ",B1) | Ou usar =A1&" "&B1 |
| Rondar um número. | =ROUND(A1,2) | Segundo arg é decimais |
Todas as cadeias de fórmulas devem começar com: =.Os nomes de funções são insensiveis a maiusculas em: Arquivos compatíveis com o Excel, mas a forma convencional de maiúsculas é mostrada acima para legibilidade.
Exemplo completo
O exemplo a seguir cria um conjunto de dados com cinco linhas de valores numéricos na coluna A, então escreve fórmulas SUMO, MEDIA, MAX e MIN na Coluna B e salva o resultado em um arquivo XLSX.
from aspose.cells_foss import Workbook, Cell
workbook = Workbook()
ws = workbook.worksheets[0]
##--- Headers ---
ws.cells["A1"].value = "Value"
ws.cells["B1"].value = "Formula"
ws.cells["C1"].value = "Result (evaluated by Excel)"
##--- Input data in A2:A6 ---
input_values = [14, 28, 7, 35, 21]
for i, val in enumerate(input_values, start=2):
ws.cells[f"A{i}"].value = val
##--- Formula labels in B column ---
ws.cells["B2"].value = "SUM"
ws.cells["B3"].value = "AVERAGE"
ws.cells["B4"].value = "MAX"
ws.cells["B5"].value = "MIN"
##--- Formulas in C column ---
ws.cells["C2"] = Cell(None, "=SUM(A2:A6)")
ws.cells["C3"] = Cell(None, "=AVERAGE(A2:A6)")
ws.cells["C4"] = Cell(None, "=MAX(A2:A6)")
ws.cells["C5"] = Cell(None, "=MIN(A2:A6)")
##--- Save ---
workbook.save("formulas_demo.xlsx")
print("Saved formulas_demo.xlsx")Quando este ficheiro é aberto no Excel ou LibreOffice Calc, a coluna C exibirá:
| Linha | Fórmula de cálculo | Resultado esperado |
|---|---|---|
| C2 | =SUM(A2:A6) | 105 |
| C3 | =AVERAGE(A2:A6) | 21 |
| C4 | =MAX(A2:A6) | 35 |
| C5 | =MIN(A2:A6) | 7 |
Notas
As cadeias de fórmulas devem começar com: =
A biblioteca armazena a corda como está. = causa a um leitor de folhas de cálculo para tratar o texto como uma cadeia literal em vez de uma fórmula.
##Correct – starts with =
ws.cells["A1"].formula = "=SUM(B1:B5)"
##Wrong – treated as the literal text "SUM(B1:B5)", not a formula
ws.cells["A1"].formula = "SUM(B1:B5)"Referências de intervalos usam notação Excel A1 padrão
Os intervalos de linhas e colunas são escritos como: FirstCell:LastCell utilizando coluna em maiúsculas letras e números de linha numa base única: "A1:A10", "B2:D5", "C3:C3".O FOSS . biblioteca não traduz ou valida a cadeia de intervalos um intervalo inválido irá ser armazenada literalmente e causar um erro no leitor de folhas de cálculo na hora da abertura.
As fórmulas são armazenadas como cadeias de caracteres, não avaliadas.
Aspose.Cells FOSS does not include a formula engine. If you need the computed resultado de uma fórmula em Python (por exemplo, para realizar cálculos adicionais), calcular o valor você mesmo e escrever como um valor estático com .value.- Usar . Fórmulas apenas quando o utilizador final abrir o ficheiro numa aplicação de folha de cálculo. que pode avaliá-los.
Ver também:
- Referência API: Documentação completa de classe e método para:
aspose.cells_foss - Base de conhecimento:Guia de instruções orientado para as tarefas a desempenhar
- Descrição geral do produto: Resumo das características e capacidades
- Iniciação / Instalação: instalação e configuração de pip
- Blog: Introdução do Aspose.Cells FOSS: Visão geral da biblioteca e início rápido
- Aspose.Cells for Python — Enterprise Documentation