Supprimer les plages nommées avec C++
Introduction
S’il y a trop de noms définis ou de plages nommées dans les fichiers Excel, nous devons en effacer certains car ils ne sont plus référencés.
Supprimer une plage nommée dans MS Excel
Pour supprimer une plage nommée dans Excel, suivez les étapes suivantes :
- Ouvrez Microsoft Excel et ouvrez le classeur contenant la plage nommée.
- Allez à l’onglet “Formules” dans le ruban Excel.
- Cliquez sur le bouton “Gestionnaire de noms” dans le groupe “Noms définis”. Cela ouvrira la boîte de dialogue Gestionnaire de noms.
- Dans la boîte de dialogue Gestionnaire de noms, sélectionnez la plage nommée que vous souhaitez supprimer.
- Cliquez sur le bouton “Supprimer”. Confirmez la suppression lorsqu’on vous le demande.
- Cliquez sur le bouton “Fermer” pour fermer la boîte de dialogue Gestionnaire de noms.
- Enregistrez le classeur pour conserver les modifications.
Supprimer la plage nommée en utilisant Aspose.Cells for C++
Avec Aspose.Cells for C++, vous pouvez supprimer des plages nommées ou des noms définis par texte ou indice dans la liste.
#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();
}
Remarque : si le nom défini est référencé par des formules, il ne peut pas être supprimé. Nous pouvons uniquement supprimer la formule du nom défini.
Supprime certaines plages nommées
Lorsque nous supprimons un nom défini, nous devons vérifier s’il est référencé par toutes les formules du fichier. Pour améliorer la performance de la suppression des plages nommées, nous pouvons en supprimer plusieurs en même temps.
#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();
}
Supprimer les noms définis en double
Certains fichiers Excel se corrompent car certains noms définis sont en double. Nous pouvons donc supprimer ces doublons pour réparer le fichier.
#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();
}