Come caricare un foglio di calcolo in C++

Come caricare un foglio di calcolo in C++

Aspose.Cells FOSS for C++ ti consente di caricare e leggere fogli di calcolo XLSX esistenti senza richiedere Microsoft Excel. Questa guida illustra come caricare un workbook, accedere ai worksheets e leggere i valori delle celle usando le classi Workbook, Worksheet e Cell.

Guida passo-passo

Passo 1: Configura la build

Aggiungi Aspose.Cells FOSS for C++ al tuo progetto CMake:

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)

Passo 2: Includi gli header richiesti

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

Passo 3: Carica il workbook

Passa il percorso del file al costruttore Workbook per caricare un file XLSX esistente:

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

Passo 4: Accedi a un foglio di lavoro

Usa Workbook::GetWorksheets() per recuperare la raccolta dei fogli di lavoro, quindi accedi per indice:

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

Passo 5: Leggi i valori delle celle

Accedi alle celle tramite la stringa di indirizzo e leggi i loro valori:

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

Passo 6: Salva eventuali modifiche

Dopo aver apportato modifiche, salva nuovamente su un file:

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

Problemi comuni e soluzioni

Errore file non trovato durante il caricamento Verifica che il percorso del file sia corretto e che il file esista. Usa un percorso assoluto se la directory di lavoro è incerta.

Stringa vuota restituita per una cella numerica Usa GetValue().AsDouble() invece di GetStringValue() — GetStringValue() restituisce una stringa vuota per le celle che contengono numeri anziché testo.

Il workbook si carica ma le celle appaiono vuote Assicurati che il file XLSX non sia protetto da password. Aspose.Cells FOSS per C++ non supporta i file crittografati.

La cella della formula restituisce un valore inatteso Le celle della formula memorizzano la stringa della formula, non il valore calcolato. La formula viene valutata da Excel quando il file viene aperto. Usa GetFormula() per recuperare il testo della formula.

Memoria non rilasciata dopo l’elaborazione Call workbook.Dispose() dopo che tutte le operazioni sono completate per rilasciare le risorse non gestite.

Domande frequenti

Posso caricare più fogli di lavoro da un unico file?

Sì. Usa Workbook::GetWorksheets() per accedere a tutti i fogli e iterare per indice. Chiama sheet.GetName() per identificare ogni foglio per nome.

Posso caricare file XLSX con più fogli e leggere da uno specifico?

Sì. Accedi ai fogli tramite indice a base zero: workbook.GetWorksheets()[1] restituisce il secondo foglio.

Il caricamento di un file attiva il ricalcolo delle formule?

No. La libreria carica i valori delle celle e le stringhe delle formule così come sono memorizzate nel file XLSX. Il ricalcolo delle formule avviene in Excel o in un lettore compatibile quando il file viene aperto.

Cosa succede se il percorso del file contiene caratteri Unicode?

Passa il percorso come un std::string con la codifica corretta per la tua piattaforma. I percorsi UTF-8 sono supportati su Linux e macOS. Su Windows, assicurati che la codifica del percorso corrisponda alla lingua del sistema.

È sicuro caricare lo stesso file più volte contemporaneamente?

La libreria non è thread-safe per l’accesso concorrente alla stessa istanza di Workbook. Carica istanze separate di Workbook per thread.

Vedi anche

 Italiano