Обновление среза с помощью Golang через C++

Возможные сценарии использования

Обновление среза означает фильтрацию данных сводной таблицы или таблицы, к которой подключен срез. Когда вы выбираете или отменяете выбор элементов среза в Microsoft Excel, связанная сводная таблица или таблица пересчитывается соответствующим образом. С Aspose.Cells for Go via C++ вам не нужно перебирать элементы кэша среза и обновлять срез вручную — метод Slicer.SelectItems(labels, append) обновляет срез и пересчитывает связанную сводную таблицу или таблицу напрямую из элементов фильтра:

  • Slicer.SelectItems(labels, append) — выбирает указанные метки и пересчитывает связанную сводную таблицу или таблицу. Если append равно true, изначально выбранные метки сохраняются, а указанные метки добавляются к выделению; если append равно false, все исходные выделения сбрасываются и выбранными остаются только указанные метки.
  • Slicer.UnselectItems(labels) — отменяет выбор части выбранных элементов.
  • Slicer.ClearFilter() — удаляет фильтр и выбирает все элементы.

Как обновить срез

Следующий образец кода загружает образец файла Excel, содержащий существующий срез, подключенный к сводной таблице. Он выбирает только элементы “Blue” и “Pink” среза с помощью Slicer.SelectItems(labels, false) — сводная таблица пересчитывается напрямую из элементов фильтра, без ручного вызова Slicer.Refresh(). Затем он сохраняет рабочую книгу как выходной файл Excel. На следующем скриншоте показано влияние образца кода на образец файла Excel. Как видно на скриншоте, сводная таблица отображает только отфильтрованные элементы. todo:image_alt_text

Образец кода

Замените текущее выделение (выбранными остаются только указанные метки) и пересчитайте связанную сводную таблицу или таблицу:

package main

import (
    "fmt"

    . "github.com/aspose-cells/aspose-cells-go-cpp/v26"
)

func main() {
    // Load sample Excel file containing slicer.
    wb, _ := NewWorkbook_String("sampleUpdatingSlicer.xlsx")

    // Access first worksheet.
    wss, _ := wb.GetWorksheets()
    ws, _ := wss.Get_Int(0)

    // Access the first slicer inside the slicer collection.
    slicers, _ := ws.GetSlicers()
    slicer, _ := slicers.Get_Int(0)

    // Select only "Blue" and "Pink"; the linked pivot table or table
    // is recalculated directly from the filter items.
    slicer.SelectItems([]string{ "Blue", "Pink" }, false)

    // Save the modified workbook.
    wb.Save_String("out.xlsx")

    fmt.Println("Slicer updated and workbook saved successfully!")
}

Сохраните текущие выбранные метки и дополнительно выберите другие элементы:

// Keep the current selection and add "Red" to it.
slicer.SelectItems([]string{ "Red" }, true)

Отмените выбор части выбранных элементов:

// Remove "Pink" from the current selection.
slicer.UnselectItems([]string{ "Pink" })

Удалите фильтр (выберите все элементы):

// Clear the filter; all slicer items become selected again.
slicer.ClearFilter()