Bekerja dengan Validasi Data
Bekerja dengan Validasi Data
Aspose.Cells FOSS for C++ supports adding cell-level data validation rules to worksheets via the Validation dan (b) ValidationCollection kelas. WorkbookValidator kelas memberikan pemeriksaan konsistensi pra-memesan.
Menambahkan Aturan Validasi
Akses koleksi validasi untuk lembar kerja dan tambahkan aturan baru menggunakan ValidationCollection::Add(). Tetapkan tipe, rumus dan area target pada yang dikembalikan Validation objek:
#include "aspose/cells_foss/Workbook.h"
#include "aspose/cells_foss/Worksheet.h"
#include "aspose/cells_foss/ValidationCollection.h"
#include "aspose/cells_foss/Validation.h"
#include "aspose/cells_foss/CellArea.h"
using namespace Aspose::Cells_FOSS;
int main() {
Workbook workbook;
Worksheet& sheet = workbook.GetWorksheets()[0];
ValidationCollection& validations = sheet.GetValidations();
int idx = validations.Add();
Validation& v = validations[idx];
v.SetType(ValidationType::WholeNumber);
v.SetFormula1("1");
v.SetFormula2("100");
v.SetIgnoreBlank(true);
v.SetInCellDropDown(false);
v.SetInputTitle("Enter Value");
v.SetInputMessage("Value must be between 1 and 100.");
v.SetErrorTitle("Invalid Input");
v.SetErrorMessage("Value is out of range.");
v.SetShowInput(true);
v.SetShowError(true);
CellArea area = CellArea::CreateCellArea("B2", "B10");
v.AddArea(area);
workbook.Save("validated.xlsx");
return 0;
}Jenis Validasi
Pengelolaan ValidationType Enumerasi mendefinisikan jenis batasan yang dapat diterapkan:
| ValidationType | Description |
|---|---|
WholeNumber | Keterbatasan nilai bulat |
Decimal | Keterbatasan titik mengambang |
List | Daftar gulung dari rumus atau kisaran |
Date | Batasan nilai tanggal |
TextLength | Batasan panjang string |
Custom | Aturan adat berdasarkan rumus |
Gaya peringatan
Pengelolaan ValidationAlertType Enumerasi mengontrol perilaku yang ditampilkan ketika validasi gagal:
| AlertStyle | Behavior |
|---|---|
Stop | Memblokir entri dan menampilkan dialog kesalahan |
Warning | Menampilkan peringatan; pengguna dapat menerima atau menolak |
Information | Menampilkan informasi tooltip |
Atur gaya peringatan dengan Validation::SetAlertStyle(ValidationAlertType).
Meminta Validasi di Sel
Penggunaan ValidationCollection::GetValidationInCell(row, col) untuk menemukan aturan validasi yang berlaku pada sel tertentu. Kembalikan nullptr jika tidak ada aturan yang berlaku.
Menghapus Aturan Validasi
Menghapus validasi dari sel atau area rentang tertentu:
CellArea area = CellArea::CreateCellArea("B2", "B10");
validations.RemoveArea(area);
// Or remove a single cell:
validations.RemoveACell(1, 1); // row=1, col=1 (0-based)
Validasi Buku Kerja Pra-Simpan
Call WorkbookValidator::ValidateForSave untuk menjalankan pemeriksaan konsistensi pada model buku kerja sebelum menyimpan. Ini disebut secara otomatis oleh Workbook::Save tetapi dapat digunakan secara independen selama pengembangan:
WorkbookValidator validator;
validator.ValidateForSave(workbook);Tips dan Praktik Terbaik
- Selalu tetapkan keduanya.
SetFormula1dan (b)SetFormula2untuk validasi jenis rentang (WholeNumber,Decimal,Date) untuk menentukan batas bawah dan atas. - Penggunaan
SetIgnoreBlank(true)untuk memungkinkan sel kosong melewati validasi tanpa memicu kesalahan. - Call
ValidationCollection::AreasOverlapsebelum menambahkan aturan baru untuk memeriksa apakah area validasi tumpang tindih pada lembar yang sama. WorkbookValidator::ValidateForSavedisebut secara internal pada save; memanggilnya selama pengembangan untuk menangkap masalah lebih awal.
Masalah Umum
| Issue | Cause | Perbaiki |
|---|---|---|
| Validasi tidak diterapkan pada sel | Daerah yang belum ditambahkan | Call Validation::AddArea(area) dengan rentang target |
| Tidak muncul drop-down | SetInCellDropDown(false) | Set (set) SetInCellDropDown(true) untuk validasi daftar |
| Peraturan tumpang tindih | Dua aturan mencakup sel yang sama | Penggunaan AreasOverlap untuk mendeteksi dan menyelesaikan konflik |
| ValidateForSave gagal | Inkonsistensi model | Memperiksa dan memperbaiki ketidakkonsistenan yang dilaporkan sebelum menyimpan |
Ringkasan Referensi API
| Kelas/Metode | Description |
|---|---|
ValidationCollection::Add() | Tambahkan aturan validasi kosong baru |
ValidationCollection::GetValidationInCell(row, col) | Menemukan validasi untuk sel |
ValidationCollection::RemoveArea(area) | Menghapus validasi dari kisaran |
ValidationCollection::RemoveACell(row, col) | Menghapus validasi dari sel |
ValidationCollection::AreasOverlap | Periksa apakah area validasi tumpang tindih |
Validation::SetType(ValidationType) | Tetapkan jenis validasi |
Validation::SetFormula1(expr) | Tetapkan batas bawah atau sumber daftar |
Validation::SetFormula2(expr) | Tetapkan batas atas |
Validation::AddArea(area) | Terapkan aturan pada kisaran |
Validation::RemoveArea(area) | Menghapus aturan dari kisaran |
Validation::SetAlertStyle(style) | Atur stop/peringatan/informasi perilaku |
WorkbookValidator::ValidateForSave | Pemeriksaan konsistensi sebelum menyimpan |