Bekerja dengan Sel dan Model Data
Bekerja dengan Sel dan Model Data
Pengelolaan Cell class adalah antarmuka utama untuk membaca dan menulis nilai sel, rumus, dan gaya spreadsheet individu. Akses ke sebuah sel melalui halaman kerja Cells koleksi menggunakan string alamat.
Menulis Nilai ke Sel-sel
Penggunaan Cell::PutValue untuk menulis teks, angka, boolean, atau tanggal ke sel:
#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;
}Menetapkan Rumus
Penggunaan Cell::SetFormula(formula) untuk menulis rumus yang kompatibel dengan Excel. Rumus dievaluasi oleh Excel atau pembaca yang sesuai saat file dibuka.
sheet.GetCells()["B4"].SetFormula("=SUM(B2:B3)");
sheet.GetCells()["C4"].SetFormula("=AVERAGE(B2:B3)");Membaca Nilai Sel
Membaca nilai saat ini dari sel dengan Cell::GetValue(), yang mengembalikan a CellValue Konversi ke tipe tertentu menggunakan aksesor yang sesuai:
CellValue val = sheet.GetCells()["B2"].GetValue();
double price = val.AsDouble();
std::string text = sheet.GetCells()["A2"].GetStringValue();Pengelolaan CellValue kelas menyediakan aksesor yang diketik:
| Method | Jenis pengembalian |
|---|---|
AsDouble() | double |
AsInteger() | int |
AsBool() | bool |
AsString() | std::string |
AsDateTime() | DateTime |
Mengakses sel berdasarkan baris dan kolom
Selain string alamat, akses sel dengan indeks baris dan kolom berbasis nol:
// Address string
Cell& cellA1 = sheet.GetCells()["A1"];
// Row/column index (0-based)
int row = cellA1.GetRow();
int col = cellA1.GetColumn();Sel yang Gabung
Penggunaan Cells::Merge untuk menggabungkan rentang sel persegi panjang menjadi satu:
CellArea area = CellArea::CreateCellArea("A1", "C1");
sheet.GetCells().Merge(area.StartRow, area.StartColumn,
area.EndRow - area.StartRow + 1,
area.EndColumn - area.StartColumn + 1);Menemukan Teks Tampilan
Untuk mendapatkan nilai sel sebagai teks tampilan yang diformat (menggunakan format angka), gunakan Cell::GetDisplayStringValue():
std::string display = sheet.GetCells()["B2"].GetDisplayStringValue();Tips dan Praktik Terbaik
- Prefer
PutValuedi atasSetValueuntuk tugas langsung secara harfiahPutValuememiliki kelebihan beban untuk semua tipe primitif. - Penggunaan
GetStringValue()untuk mengambil teks tanpa konversi tipe; menggunakanGetValue().AsDouble()ketika Anda membutuhkan presisi numerik. - Selalu menelepon.
SetFormulauntuk sel formula, tidakPutValue("=SUM(...)")yang terakhir menyimpan string literal, bukan rumus. - Penggunaan
CellArea::CreateCellArea(start, end)untuk membangun objek rentang untuk operasi penggabungan dan pemformatan.
Masalah Umum
| Issue | Cause | Perbaiki |
|---|---|---|
GetValue() kembali kosong | Sel belum ditulis | Tuliskan nilai dengan PutValue sebelum membaca |
| Rumus tidak dievaluasi | Rumus disimpan sebagai string | Penggunaan SetFormula(expr) sebagai pengganti PutValue(expr) |
| Merger gagal | Ukuran kisaran yang tidak valid | Ensure endRow >= startRow dan (b) endColumn >= startColumn |
| Ketidaksesuaian tipe pada read | Menghubungi salah As*() metode | Cocokkan aksesori dengan asli PutValue jenisnya |
Ringkasan Referensi API
| Kelas/Metode | Description |
|---|---|
Cell::PutValue(value) | Tuliskan nilai literal ke sel |
Cell::SetFormula(formula) | Tetapkan string rumus Excel |
Cell::GetValue() | Dapatkan nilai sel sebagai a CellValue |
Cell::GetStringValue() | Memperoleh nilai sel sebagai string |
Cell::GetDisplayStringValue() | Memperoleh string tampilan yang diformat |
Cell::GetRow() | Dapatkan indeks baris berbasis nol |
Cell::GetColumn() | Dapatkan indeks kolom berbasis nol |
Cell::GetStyle() | Dapatkan gaya sel saat ini |
Cell::SetStyle(style) | Menerapkan gaya yang dimodifikasi ke sel |
CellValue::AsDouble() | Konversi nilai sel menjadi dua kali lipat |
CellValue::AsString() | Konversi nilai sel ke string |
Cells::Merge(row, col, rows, cols) | Gabungkan rentang persegi panjang |