Hoe een Spreadsheet te Laden in C++
Aspose.Cells FOSS voor C++ stelt je in staat om bestaande XLSX-spreadsheets te laden en lezen zonder Microsoft Excel te vereisen. Deze gids leidt je door het laden van een werkmap, het benaderen van werkbladen en het lezen van celwaarden met behulp van de Workbook, Worksheet en Cell klassen.
Stapsgewijze handleiding
Stap 1: Stel de build in
Voeg Aspose.Cells FOSS voor C++ toe aan je CMake-project:
cmake_minimum_required(VERSION 3.15)
project(LoadSpreadsheet CXX)
set(CMAKE_CXX_STANDARD 17)
add_subdirectory(path/to/Aspose.Cells-FOSS-for-Cpp)
add_executable(LoadSpreadsheet main.cpp)
target_link_libraries(LoadSpreadsheet PRIVATE Aspose.Cells.Foss.Cpp)Stap 2: Vereiste headers opnemen
#include "aspose/cells_foss/Workbook.h"
#include "aspose/cells_foss/WorksheetCollection.h"
#include "aspose/cells_foss/Worksheet.h"
#include "aspose/cells_foss/Cell.h"
using namespace Aspose::Cells_FOSS;Stap 3: Laad de werkmap
Geef het bestandspad door aan de Workbook constructor om een bestaand XLSX-bestand te laden:
int main() {
Workbook workbook("input.xlsx");
// workbook is now loaded and ready to use
return 0;
}Stap 4: Toegang tot een werkblad
Gebruik Workbook::GetWorksheets() om de collectie werkbladen op te halen, en benader deze vervolgens via de index:
Worksheet& sheet = workbook.GetWorksheets()[0];
std::string name = sheet.GetName();Stap 5: Celwaarden lezen
Benader cellen via een adresreeks en lees hun waarden:
std::string text = sheet.GetCells()["A1"].GetStringValue();
double number = sheet.GetCells()["B2"].GetValue().AsDouble();
bool flag = sheet.GetCells()["C3"].GetValue().AsBool();Stap 6: Wijzigingen opslaan
Na het aanbrengen van wijzigingen, sla terug op naar een bestand:
workbook.Save("output.xlsx");
workbook.Dispose();Veelvoorkomende problemen en oplossingen
Bestand niet gevonden fout bij laden Controleer of het bestandspad correct is en het bestand bestaat. Gebruik een absoluut pad als de werkmap onzeker is.
Lege tekenreeks geretourneerd voor een numerieke cel Gebruik GetValue().AsDouble() in plaats van GetStringValue() — GetStringValue() retourneert een lege tekenreeks voor cellen die nummers bevatten in plaats van tekst.
Werkmap laadt maar cellen lijken leeg Zorg ervoor dat het XLSX-bestand niet met een wachtwoord beveiligd is. Aspose.Cells FOSS voor C++ ondersteunt geen versleutelde bestanden.
Formulecel geeft onverwachte waarde Formulecellen slaan de formuletekst op, niet de berekende waarde. De formule wordt door Excel geëvalueerd wanneer het bestand wordt geopend. Gebruik GetFormula() om de formuletekst op te halen.
Geheugen wordt niet vrijgegeven na verwerking Call workbook.Dispose() na het voltooien van alle bewerkingen om niet-beheerde bronnen vrij te geven.
Veelgestelde vragen
Kan ik meerdere werkbladen uit één bestand laden?
Ja. Gebruik Workbook::GetWorksheets() om toegang te krijgen tot alle bladen en itereren op index. Roep sheet.GetName() aan om elk blad bij naam te identificeren.
Kan ik XLSX-bestanden met meerdere bladen laden en van een specifiek blad lezen?
Ja. Toegang tot bladen via een nulgebaseerde index: workbook.GetWorksheets()[1] geeft het tweede blad terug.
Veroorzaakt het laden van een bestand het opnieuw berekenen van formules?
Nee. De bibliotheek laadt celwaarden en formule-strings zoals opgeslagen in het XLSX-bestand. Formule-herberekening vindt plaats in Excel of een compatibele lezer wanneer het bestand wordt geopend.
Wat gebeurt er als het bestandspad Unicode-tekens bevat?
Geef het pad door als een std::string met de juiste codering voor uw platform. UTF-8-paden worden ondersteund op Linux en macOS. Op Windows moet u ervoor zorgen dat de padcodering overeenkomt met de systeem-locale.
Is het veilig om hetzelfde bestand meerdere keren gelijktijdig te laden?
De bibliotheek is niet thread-veilig voor gelijktijdige toegang tot dezelfde Workbook-instantie. Laad afzonderlijke Workbook-instanties per thread.