Filtrar nombres definidos al cargar libro de trabajo con JavaScript a través de C++

Escenarios de uso posibles

Aspose.Cells le permite filtrar o eliminar nombres definidos presentes en el libro de trabajo. Por favor, utilice LoadDataFilterOptions.DefinedNames para cargar nombres definidos y LoadDataFilterOptions.DefinedNames para eliminarlos al cargar el libro. Tenga en cuenta que, si elimina los nombres definidos, las fórmulas dentro del libro pueden dejar de funcionar.

Filtrar nombres definidos al cargar el libro de trabajo

El siguiente código de ejemplo carga el archivo de Excel de muestra que tiene una fórmula en la celda C1 que contiene los nombres definidos, es decir, =SUM(MyName1, MyName2). Como estamos usando LoadDataFilterOptions.DefinedNames para eliminar los nombres definidos al cargar el libro, la fórmula en la celda C1 en el archivo de Excel de salida se rompe y muestra #NAME? en su lugar. Por favor, vea la siguiente captura de pantalla que muestra el efecto del código en el archivo de Excel de muestra.

todo:image_alt_text

Código de muestra

<!DOCTYPE html>
<html>
    <head>
        <title>Filter Defined Names While Loading Workbook</title>
    </head>
    <body>
        <h1>Filter Defined Names While Loading Workbook</h1>
        <input type="file" id="fileInput" accept=".xlsx,.xls" />
        <button id="runExample">Run Example</button>
        <a id="downloadLink" style="display: none;">Download Result</a>
        <div id="result"></div>
    </body>

    <script src="aspose.cells.js.min.js"></script>
    <script type="text/javascript">
        const { Workbook, SaveFormat, LoadOptions, LoadFilter, LoadDataFilterOptions, Utils } = AsposeCells;

        AsposeCells.onReady({
            license: "/lic/aspose.cells.enc",
            fontPath: "/fonts/",
            fontList: [
                "arial.ttf",
                "NotoSansSC-Regular.ttf"
            ]
        }).then(() => {
            console.log("Aspose.Cells initialized");
        });

        document.getElementById('runExample').addEventListener('click', async () => {
            const fileInput = document.getElementById('fileInput');
            const resultDiv = document.getElementById('result');
            if (!fileInput.files.length) {
                resultDiv.innerHTML = '<p style="color: red;">Please select an Excel file.</p>';
                return;
            }

            const file = fileInput.files[0];
            const arrayBuffer = await file.arrayBuffer();

            // Specify the load options
            let opts = new LoadOptions();
            // We do not want to load defined names
            opts.loadFilter = new LoadFilter(~LoadDataFilterOptions.DefinedNames);

            // Load the workbook with load options
            const workbook = new Workbook(new Uint8Array(arrayBuffer), opts);

            // Save the output Excel file, it will break the formula in C1 if defined names were removed
            const outputData = workbook.save(SaveFormat.Xlsx);
            const blob = new Blob([outputData]);
            const downloadLink = document.getElementById('downloadLink');
            downloadLink.href = URL.createObjectURL(blob);
            downloadLink.download = 'outputFilterDefinedNamesWhileLoadingWorkbook.xlsx';
            downloadLink.style.display = 'block';
            downloadLink.textContent = 'Download Modified Excel File';

            resultDiv.innerHTML = '<p style="color: green;">FilterDefinedNamesWhileLoadingWorkbook executed successfully. Click the download link to get the modified file.</p>';
        });
    </script>
</html>