Elimina intervalli nominati con C++

Introduzione

Se ci sono troppi nomi definiti o intervalli nominati nei file Excel, dobbiamo eliminarne alcuni perché non vengono più referenziati.

Rimuovere Intervallo Nominato in MS Excel

Per rimuovere un intervallo nominato da Excel, segui questi passaggi:

  1. Apri Microsoft Excel e apri il libro di lavoro che contiene l’intervallo nominato.
  2. Vai alla scheda “Formule” nella barra multifunzione di Excel.
  3. Fai clic sul pulsante “Gestione nomi” nel gruppo “Nomi definiti”. Si aprirà la finestra di dialogo Gestione nomi.
  4. Nella finestra di dialogo Gestione nomi, seleziona l’intervallo nominato che desideri rimuovere.
  5. Fai clic sul pulsante “Elimina”. Conferma l’eliminazione quando richiesto.
  6. Fai clic sul pulsante “Chiudi” per chiudere la finestra di dialogo Gestione nomi.
  7. Salva il libro di lavoro per mantenere le modifiche.

Elimina intervallo nominato usando Aspose.Cells for C++

Con Aspose.Cells for C++, puoi rimuovere intervalli nominati o nomi definiti tramite testo  o indice nella lista.

#include <iostream>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;

int main()
{
    Aspose::Cells::Startup();

    // Source directory path
    U16String srcDir(u"..\\Data\\01_SourceDirectory\\");

    // Output directory path
    U16String outDir(u"..\\Data\\02_OutputDirectory\\");

    // Path of input Excel file
    U16String inputFilePath = srcDir + u"Book1.xlsx";

    // Path of output Excel file
    U16String outputFilePath = outDir + u"Book2.xlsx";

    // Instantiate a new Workbook
    Workbook workbook(inputFilePath);

    // Get all the worksheets in the book
    WorksheetCollection worksheets = workbook.GetWorksheets();

    // Delete a named range by text
    worksheets.GetNames().Remove(u"NamedRange");

    // Delete a defined name by index
    worksheets.GetNames().RemoveAt(0);

    // Save the workbook to retain the changes
    workbook.Save(outputFilePath);

    std::cout << "Named ranges removed successfully!" << std::endl;

    Aspose::Cells::Cleanup();
}

Nota: se il nome definito è referenziato da formule, non può essere rimosso. Possiamo rimuovere solo la formula del nome definito.

Rimuove alcuni intervalli nominati

Quando rimuoviamo un nome definito, dobbiamo verificare se è referenziato da tutte le formule nel file. Per migliorare le performance nella rimozione degli intervalli nominati, possiamo rimuoverne alcuni insieme.

#include <iostream>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;

int main()
{
    Aspose::Cells::Startup();

    // Source directory path
    U16String srcDir(u"..\\Data\\01_SourceDirectory\\");

    // Output directory path
    U16String outDir(u"..\\Data\\02_OutputDirectory\\");

    // Path of input excel file
    U16String inputFilePath = srcDir + u"Book1.xlsx";

    // Path of output excel file
    U16String outputFilePath = outDir + u"Book2.xlsx";

    // Instantiate a new Workbook
    Workbook workbook(inputFilePath);

    // Get all the worksheets in the book
    WorksheetCollection worksheets = workbook.GetWorksheets();

    // Delete some defined names
    Vector<U16String> namesToRemove = { u"NamedRange1", u"NamedRange2" };
    worksheets.GetNames().Remove(namesToRemove);

    // Save the workbook to retain the changes
    workbook.Save(outputFilePath);

    std::cout << "Named ranges removed successfully!" << std::endl;

    Aspose::Cells::Cleanup();
}

Rimuovere Nomi Definiti Duplicati

Alcuni file Excel si corrompono perché alcuni nomi definiti sono duplicati. Quindi possiamo rimuovere questi nomi duplicati per riparare il file.

#include <iostream>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;

int main()
{
    Aspose::Cells::Startup();

    // Source directory path
    U16String srcDir(u"..\\Data\\01_SourceDirectory\\");

    // Output directory path
    U16String outDir(u"..\\Data\\02_OutputDirectory\\");

    // Path of input Excel file
    U16String inputFilePath = srcDir + u"Book1.xlsx";

    // Path of output Excel file
    U16String outputFilePath = outDir + u"Book2.xlsx";

    // Instantiate a new Workbook
    Workbook workbook(inputFilePath);

    // Get all the worksheets in the book
    WorksheetCollection worksheets = workbook.GetWorksheets();

    // Delete some defined names
    worksheets.GetNames().RemoveDuplicateNames();

    // Save the workbook to retain the changes
    workbook.Save(outputFilePath);

    std::cout << "Workbook saved successfully after removing duplicate names!" << std::endl;

    Aspose::Cells::Cleanup();
}