Trabalhar com células e o modelo de dados
Trabalhar com células e o modelo de dados
A Comissão Cell class é a interface principal para ler e escrever valores de células, fórmulas e estilos individuais da planilha. Acesse uma célula através do menu da folha de cálculo. Cells Coleção utilizando uma cadeia de endereços.
Escrever valores em células
Utilização: Cell::PutValue para escrever texto, números, booleanos ou datas em uma célula:
#include "aspose/cells_foss/Workbook.h"
#include "aspose/cells_foss/Worksheet.h"
#include "aspose/cells_foss/Cell.h"
using namespace Aspose::Cells_FOSS;
int main() {
Workbook workbook;
Worksheet& sheet = workbook.GetWorksheets()[0];
sheet.GetCells()["A1"].PutValue("Product");
sheet.GetCells()["B1"].PutValue("Price");
sheet.GetCells()["A2"].PutValue("Widget");
sheet.GetCells()["B2"].PutValue(9.99);
sheet.GetCells()["C2"].PutValue(true);
workbook.Save("data.xlsx");
return 0;
}Configuração de fórmulas
Utilização: Cell::SetFormula(formula) Para escrever uma fórmula compatível com o Excel. As fórmulas são avaliadas pelo Excel ou leitores compativeis quando o arquivo é aberto.
sheet.GetCells()["B4"].SetFormula("=SUM(B2:B3)");
sheet.GetCells()["C4"].SetFormula("=AVERAGE(B2:B3)");Leitura de valores das células
Leia o valor atual de uma célula com: Cell::GetValue(), que retorna um valor de CellValue Conversão para um tipo específico utilizando o acessório adequado:
CellValue val = sheet.GetCells()["B2"].GetValue();
double price = val.AsDouble();
std::string text = sheet.GetCells()["A2"].GetStringValue();A Comissão CellValue classe fornece acessórios tipados:
| Método de avaliação | Tipo de devolução |
|---|---|
AsDouble() | double |
AsInteger() | int |
AsBool() | bool |
AsString() | std::string |
AsDateTime() | DateTime |
Acesso a células por linha e coluna
Além das cadeias de endereços, aceder a células por índices baseados em zero:
// Address string
Cell& cellA1 = sheet.GetCells()["A1"];
// Row/column index (0-based)
int row = cellA1.GetRow();
int col = cellA1.GetColumn();Células em fusão
Utilização: Cells::Merge Para fundir um intervalo retangular de células num:
CellArea area = CellArea::CreateCellArea("A1", "C1");
sheet.GetCells().Merge(area.StartRow, area.StartColumn,
area.EndRow - area.StartRow + 1,
area.EndColumn - area.StartColumn + 1);Obter texto de exibição
Para recuperar o valor da célula como texto de exibição formatado (aplicando formatos numéricos), use Cell::GetDisplayStringValue():
std::string display = sheet.GetCells()["B2"].GetDisplayStringValue();Dicas e melhores práticas
- Preferência
PutValuemais uma vez .SetValuepara atribuições directasPutValuetem sobrecargas para todos os tipos primitivos. - Utilização:
GetStringValue()para recuperar texto sem conversão de tipo; useGetValue().AsDouble()quando precisam de precisão numérica. - Sempre ligue.
SetFormulapara células de fórmula, nãoPutValue("=SUM(...)")o último armazena um literal de string, não uma fórmula. - Utilização:
CellArea::CreateCellArea(start, end)para criar objetos de gama para operações de fusão e formatação.
Problemas comuns
| Emissão | Causa da morte | Correção |
|---|---|---|
GetValue() retorna vazio | Célula não foi escrita | Escreva um valor com: PutValue antes de ler. |
| Fórmula não avaliada | Fórmula guardada como cadeia de caracteres | Utilização: SetFormula(expr) em vez de: PutValue(expr) |
| Fusão fracassada | Dimensões de intervalo inválidas | Assegurar a endRow >= startRow e a) endColumn >= startColumn |
| Desconcordância de tipo na leitura | Chamar errado . As*() método de | Compare o acessório com o original. PutValue Tipo de veículo: |
Resumo de referência da API
| Classe/Método | Descrição: |
|---|---|
Cell::PutValue(value) | Escreva um valor literal na célula. |
Cell::SetFormula(formula) | Configurar uma sequência de fórmulas do Excel |
Cell::GetValue() | Obter o valor da célula como um CellValue |
Cell::GetStringValue() | Obter o valor da célula como uma cadeia de caracteres . |
Cell::GetDisplayStringValue() | Obter a cadeia de caracteres formatada para exibição |
Cell::GetRow() | Obter o índice de linha baseado em zero |
Cell::GetColumn() | Obter o índice de coluna baseada em zero |
Cell::GetStyle() | Obter o estilo de célula atual |
Cell::SetStyle(style) | Aplicar um estilo modificado na célula |
CellValue::AsDouble() | Converter o valor da célula para duplo |
CellValue::AsString() | Converter o valor da célula para cadeia de caracteres |
Cells::Merge(row, col, rows, cols) | Merger um intervalo retangular |