Jak načíst tabulku v C++

Jak načíst tabulku v C++

Aspose.Cells FOSS for C++ vám umožňuje načíst a číst existující XLSX tabulky bez nutnosti Microsoft Excel. Tento průvodce vás provede načtením sešitu, přístupem k listům a čtením hodnot buněk pomocí tříd Workbook, Worksheet a Cell.

Návod krok za krokem

Krok 1: Nastavení sestavení

Přidejte Aspose.Cells FOSS for C++ do svého CMake projektu:

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)

Krok 2: Zahrňte požadované hlavičkové soubory

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

Krok 3: Načtěte sešit

Předejte cestu k souboru konstruktoru Workbook, abyste načetli existující soubor XLSX:

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

Krok 4: Přístup k listu

Použijte Workbook::GetWorksheets() k získání kolekce listů, poté přistupujte podle indexu:

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

Krok 5: Čtení hodnot buněk

Přistupujte k buňkám pomocí řetězce adresy a načtěte jejich hodnoty:

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

Krok 6: Uložení všech změn

Po provedení úprav uložte zpět do souboru:

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

Běžné problémy a opravy

Chyba souboru nenalezen při načítání Ověřte, že je cesta k souboru správná a soubor existuje. Použijte absolutní cestu, pokud si nejste jisti pracovním adresářem.

Prázdný řetězec vrácen pro číselnou buňku Použijte GetValue().AsDouble() namísto GetStringValue() — GetStringValue() vrací prázdný řetězec pro buňky, které obsahují čísla místo textu.

Sešit se načte, ale buňky se jeví jako prázdné Ujistěte se, že soubor XLSX není chráněn heslem. Aspose.Cells FOSS for C++ nepodporuje šifrované soubory.

Buňka s formulí vrací neočekávanou hodnotu Buňky s formulí ukládají řetězec vzorce, nikoli vypočtenou hodnotu. Vzorec je vyhodnocen aplikací Excel při otevření souboru. Použijte GetFormula() k získání textu vzorce.

Paměť není po zpracování uvolněna Call workbook.Dispose() po dokončení všech operací uvolnit neřízené prostředky.

Často kladené otázky

Mohu načíst více listů z jednoho souboru?

Ano. Použijte Workbook::GetWorksheets() k přístupu ke všem listům a iteraci podle indexu. Zavolejte sheet.GetName() k identifikaci každého listu podle názvu.

Mohu načíst soubory XLSX s více listy a číst z konkrétního listu?

Ano. Přistupujte k listům pomocí nulového indexu: workbook.GetWorksheets()[1] vrací druhý list.

Spouští načtení souboru přepočet vzorců?

Ne. Knihovna načítá hodnoty buněk a řetězce vzorců tak, jak jsou uloženy v souboru XLSX. Přepočet vzorců probíhá v Excelu nebo kompatibilním čtečce při otevření souboru.

Co se stane, pokud cesta k souboru obsahuje Unicode znaky?

Předávejte cestu jako std::string s správným kódováním pro vaši platformu. Cesty UTF-8 jsou podporovány na Linuxu a macOS. Ve Windows se ujistěte, že kódování cesty odpovídá systémovému locale.

Je bezpečné načítat stejný soubor vícekrát současně?

Knihovna není vlákny bezpečná při souběžném přístupu ke stejné Workbook instanci. Načtěte samostatné Workbook instance pro každé vlákno.

Viz také:

 Čeština