Wie man ein Spreadsheet in C++ lädt

Wie man ein Spreadsheet in C++ lädt

Aspose.Cells FOSS für C++ ermöglicht das Laden und Lesen vorhandener XLSX-Spreadsheet-Dateien, ohne Microsoft Excel zu benötigen. Dieser Leitfaden führt Sie durch das Laden einer Arbeitsmappe, den Zugriff auf Arbeitsblätter und das Auslesen von Zellwerten mithilfe der Klassen Workbook, Worksheet und Cell.

Schritt-für-Schritt-Anleitung

Schritt 1: Build einrichten

Fügen Sie Aspose.Cells FOSS für C++ zu Ihrem CMake-Projekt hinzu:

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)

Schritt 2: Erforderliche Header einbinden

#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;

Schritt 3: Arbeitsmappe laden

Geben Sie den Dateipfad an den Workbook-Konstruktor weiter, um eine vorhandene XLSX-Datei zu laden:

int main() {
    Workbook workbook("input.xlsx");
    // workbook is now loaded and ready to use
    return 0;
}

Schritt 4: Zugriff auf ein Arbeitsblatt

Verwenden Sie Workbook::GetWorksheets(), um die Arbeitsblatt-Sammlung abzurufen, und greifen Sie dann über den Index zu:

Worksheet& sheet = workbook.GetWorksheets()[0];
std::string name = sheet.GetName();

Schritt 5: Zellwerte lesen

Greifen Sie über den Adress-String auf Zellen zu und lesen Sie deren Werte:

std::string text = sheet.GetCells()["A1"].GetStringValue();
double number = sheet.GetCells()["B2"].GetValue().AsDouble();
bool flag = sheet.GetCells()["C3"].GetValue().AsBool();

Schritt 6: Änderungen speichern

Nachdem Sie Änderungen vorgenommen haben, speichern Sie zurück in eine Datei:

workbook.Save("output.xlsx");
workbook.Dispose();

Häufige Probleme und Lösungen

Fehler: Datei nicht gefunden beim Laden Stellen Sie sicher, dass der Dateipfad korrekt ist und die Datei existiert. Verwenden Sie einen absoluten Pfad, wenn das Arbeitsverzeichnis unsicher ist.

Leere Zeichenkette zurückgegeben für eine numerische Zelle Verwenden Sie GetValue().AsDouble() statt GetStringValue() — GetStringValue() gibt eine leere Zeichenkette zurück für Zellen, die Zahlen anstelle von Text enthalten.

Arbeitsmappe wird geladen, aber Zellen erscheinen leer Stellen Sie sicher, dass die XLSX-Datei nicht passwortgeschützt ist. Aspose.Cells FOSS für C++ unterstützt keine verschlüsselten Dateien.

Formelzelle gibt unerwarteten Wert zurück Formelzellen speichern die Formelzeichenkette, nicht den berechneten Wert. Die Formel wird von Excel ausgewertet, wenn die Datei geöffnet wird. Verwenden Sie GetFormula() um den Formeltext abzurufen.

Speicher nach der Verarbeitung nicht freigegeben Call workbook.Dispose() nach Abschluss aller Vorgänge, um nicht verwaltete Ressourcen freizugeben.

Häufig gestellte Fragen

Kann ich mehrere Arbeitsblätter aus einer einzigen Datei laden?

Ja. Verwenden Sie Workbook::GetWorksheets(), um auf alle Tabellen zuzugreifen und nach Index zu iterieren. Rufen Sie sheet.GetName() auf, um jede Tabelle anhand ihres Namens zu identifizieren.

Kann ich XLSX-Dateien mit mehreren Tabellenblättern laden und aus einem bestimmten lesen?

Ja. Greifen Sie über nullbasierten Index auf Tabellen zu: workbook.GetWorksheets()[1] gibt das zweite Tabellenblatt zurück.

Löst das Laden einer Datei die Neuberechnung von Formeln aus?

Nein. Die Bibliothek lädt Zellwerte und Formelformeln so, wie sie in der XLSX-Datei gespeichert sind. Die Neuberechnung von Formeln erfolgt in Excel oder einem kompatiblen Leser, wenn die Datei geöffnet wird.

Was passiert, wenn der Dateipfad Unicode-Zeichen enthält?

Übergeben Sie den Pfad als std::string mit der korrekten Kodierung für Ihre Plattform. UTF-8-Pfade werden unter Linux und macOS unterstützt. Unter Windows stellen Sie sicher, dass die Pfadkodierung mit der System-Lokale übereinstimmt.

Ist es sicher, dieselbe Datei mehrfach gleichzeitig zu laden?

Die Bibliothek ist nicht thread-sicher für gleichzeitigen Zugriff auf dieselbe Workbook-Instanz. Laden Sie separate Workbook-Instanzen pro Thread.

Siehe auch

 Deutsch