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.