Trabajar con tablas

Trabajar con tablas

Aspose.Cells FOSS for Java supports Excel tables (also known as ListObjects or Puedes crear nuevas tablas de las ramas de células, inspeccionar tablas existentes, configurar los header y las líneas totales, aplicar estilos de mesa integrados, acceso a las columnas individuales, y convertir las tablas de vuelta a rango normal. El punto de entrada es ListObjectCollection,Acceso a través de Worksheet.getListObjects().


Visión general

Las tablas en una hoja de trabajo se manejan a través del ListObjectCollection devuelto por Worksheet.getListObjects().Cada uno ListObject Se trata de una tabla Excel y exponer su nombre de pantalla, comentario, límites de gama celular, colección de columnas, estilo configuraciones, y el título/total de la línea de visibilidad.

Se crea una nueva mesa con ListObjectCollection.add(startRow, startColumn, endRow, endColumn, hasHeaders), que devolve el índice basado en cero del tabla recién creado. El sobrecargo acepta las líneas de nombre celular: ListObjectCollection.add(startCellName, endCellName, hasHeaders).


Clases clave

claseDescripción
ListObjectRepresenta una tabla de Excel. Expuestas getDisplayName(), getComment(), las coordenadas de rango, la colección de columnas, el tipo de estilo y la visibilidad del encabezado/total.
ListObjectCollectionColección de todas las tablas en una hoja de trabajo.Suport getCount(),Indicados y denominados por la get(), add(), remove(),y los asistentes de conversión de estilo.
ListColumnRepresenta una columna dentro de un tablo. Exponer la identificación de la coluna, el nombre y las configuraciones de cálculo total-rojo.
ListColumnCollectionColección ordenada de columnas en una tabla. Iterable con número y acceso al índice.
TableStyleTypeEnum que identifica un estilo de tabla en Excel integrado (Light 1–21, Medium 1 – 28, Dark 1-11 o Custom/None).
TotalsCalculationEnum para la función de agregado en la línea total de una tabla (SUM, COUNT, AVERAGE, MAX, MIN, STD_DEV, VAR, CONTA_NUMES, CUSTOM, NONE).

Acceso a tablas en una hoja de trabajo

Recuperar el ListObjectCollection de cualquier Worksheet por vía Worksheet.getListObjects().Uso de ListObjectCollection.getCount() Para determinar cuántas tablas existen. las tabelas individuales se acceden por índice basado en cero a través de la ListObjectCollection.get(index) o por nombre de muestra a través del ListObjectCollection.get(name).

Workbook wb = new Workbook("input.xlsx");
WorksheetCollection sheets = wb.getWorksheets();
Worksheet ws = sheets.get(0);
ListObjectCollection tables = ws.getListObjects();

for (int i = 0; i < tables.getCount(); i++) {
    ListObject table = tables.get(i);
    System.out.println("Table: " + table.getDisplayName()
        + " rows: " + table.getStartRow() + "-" + table.getEndRow());
}

Crear una nueva mesa

Uso ListObjectCollection.add() para insertar una tabla sobre un rango de células. el hasHeaders El parámetro indica si la primera línea del rango contiene Capítulos de columna.

Workbook wb = new Workbook();
WorksheetCollection sheets = wb.getWorksheets();
Worksheet ws = sheets.get(0);

// Populate data
ws.getCells().get("A1").putValue("Product");
ws.getCells().get("B1").putValue("Quantity");
ws.getCells().get("A2").putValue("Widget");
ws.getCells().get("B2").putValue(100);

// Create table over A1:B2 with headers in row 0
int tableIndex = ws.getListObjects().add(0, 0, 1, 1, true);
ListObject table = ws.getListObjects().get(tableIndex);
table.setDisplayName("SalesTable");

Inspección de propiedades de mesa

Una vez que te mantenga una ListObject La referencia que puedes leer:

  • ListObject.getDisplayName() - la barra de nombre del tabla.
  • ListObject.getComment() - un comentario opcional asociado con la mesa.
  • ListObject.getStartRow() / ListObject.getStartColumn() - la célula superior izquierda de la rama de mesa.
  • ListObject.getEndRow() / ListObject.getEndColumn() - la célula derecha inferior de la rama de mesa.
  • ListObject.isShowHeaderRow() - si la línea de cabeza es visible.
  • ListObject.isShowTotals() - si la línea total es visible.
  • ListObject.getListColumns() - El ListColumnCollection para la mesa.

Estilo de tablas

Aplique un estilo de mesa integrado utilizando ListObject.setTableStyleType(TableStyleType). El TableStyleType Enum incluye Luz (1–21), Medium (1‐28) y Oscuridad (1-11) Variantes más NONE y CUSTOM.

ListObject table = ws.getListObjects().get(0);
table.setTableStyleType(TableStyleType.TABLE_STYLE_MEDIUM_2);

Estilo adicional toggles control de líneas en bandas, columnas en Bandas y primer / último énfasis de la columna:

  • ListObject.setShowTableStyleRowStripes(boolean)
  • ListObject.setShowTableStyleColumnStripes(boolean)
  • ListObject.setShowTableStyleFirstColumn(boolean)
  • ListObject.setShowTableStyleLastColumn(boolean)

También puedes definir un nombre de estilo personalizado con ListObject.setTableStyleName(String).

Métodos de ayuda ListObjectCollection.parseTableStyleType(String) y ListObjectCollection.tableStyleTypeName(TableStyleType) Convertir entre los Enum y su representación de la línea.


Trabajar con las columnas de mesa

Acceso a las columnas individuales a través de ListObject.getListColumns(),que devuelve a ListColumnCollection.Cada uno ListColumn Exposiciones :

  • ListColumn.getId() - el identificador de columna OOXML unicamente basado.
  • ListColumn.getName() / ListColumn.setName(String) - El texto de la columna.
  • ListColumn.getTotalsCalculation() / ListColumn.setTotalsCalculation(TotalsCalculation) - la función de agregado para la línea total.
  • ListColumn.getTotalsRowLabel() / ListColumn.setTotalsRowLabel(String) - una etiqueta personalizada en la línea total.
  • ListColumn.getTotalsRowFormula() / ListColumn.setTotalsRowFormula(String) - una fórmula personalizada para la línea total.
ListObject table = ws.getListObjects().get(0);
ListColumnCollection columns = table.getListColumns();
for (int i = 0; i < columns.getCount(); i++) {
    ListColumn col = columns.get(i);
    System.out.println("Column " + col.getId() + ": " + col.getName());
}

Configuración de la línea total

Puede ser que los números de la línea con ListObject.setShowTotals(true),Entonces, se establece por columna Funciones de agregado utilizando el TotalsCalculation Enum →.

ListObject table = ws.getListObjects().get(0);
table.setShowTotals(true);

ListColumn qtyColumn = table.getListColumns().get(1);
qtyColumn.setTotalsCalculation(TotalsCalculation.SUM);

ListColumn labelColumn = table.getListColumns().get(0);
labelColumn.setTotalsRowLabel("Total");

Recuperar y convertir tablas

Recuperar una mesa para cubrir un rango de células diferente utilizando ListObject.resize(startRow, startColumn, endRow, endColumn, hasHeaders).

Convertir una tabla de vuelta a un rango celular normal con ListObject.convertToRange(). Esto elimina la estructura de la tabla mientras se conservan los datos celulares y formata.

Removemos una mesa completamente de la colección con ListObjectCollection.removeAt(index).


AutoFilter en las tablas

Mostrar o eliminar las columnas de los arroyos de filtro automático en una tabla:

  • ListObject.showAutoFilter() - Mostrar las arenas de filtro en la línea de cabeza.
  • ListObject.removeAutoFilter() - Esconde las armaduras de filtros.

Sumación de referencia API

ListObject

MetodologíaTipo de regresoDescripción
getDisplayName()String-Mostrar el nombre de la mesa.
setDisplayName(name)voidToma el nombre de la muestra.
getComment()StringComentarios opcionales para la mesa.
setComment(comment)voidComentario de la mesa.
getStartRow()intInicio de la línea índice del rango de tabla.
getStartColumn()intInicio de la columna índice del rango de tabla.
getEndRow()intIndice de línea final del rango de la tabla.
getEndColumn()intIndice de la columna final del rango de tabla.
isShowHeaderRow()booleanSi la línea de cabeza es visible.
setShowHeaderRow(show)voidMostrar o ocultar la línea de cabeza.
isShowTotals()boolean¿Es visible la línea total?.
setShowTotals(show)voidMostrar o ocultar la línea total.
getTableStyleType()TableStyleTypeEl estilo de mesa integrado.
setTableStyleType(type)voidSe aplica un estilo de mesa integrado.
getTableStyleName()StringNombre de estilo personalizado.
setTableStyleName(name)voidToma un nombre de estilo de mesa personalizado.
getListColumns()ListColumnCollectionColección de columnas de la mesa.
resize(...)voidRecuperar la mesa a una nueva gama.
convertToRange()voidConvertir la mesa en un rango normal.
showAutoFilter()voidDispone de los arcos de auto-filter.
removeAutoFilter()voidEscribe las arenas de auto-filter.

ListObjectCollection

MetodologíaTipo de regresoDescripción
getCount()intNúmero de tablas en la hoja de trabajo.
get(index)ListObjectDevolve la tabla al dato de índice basado en cero.
get(name)ListObjectDevolve la tabla con el nombre de pantalla dado.
add(startRow, startColumn, endRow, endColumn, hasHeaders)intCrea una nueva tabla; devolve su índice.
add(startCellName, endCellName, hasHeaders)intCrea una nueva tabla de nombres de células; devolve su índice.
removeAt(index)voidEliminar la tabla en el índice dado.
parseTableStyleType(name)TableStyleTypeConvertir una línea a un TableStyleType El valor enum.
tableStyleTypeName(type)StringConvertir a TableStyleType Enum a su nombre de string.

ListColumn

MetodologíaTipo de regresoDescripción
getId()intIdentificador de columna OOXML.
getName()StringEl texto de la columna.
setName(name)voidEntra el texto de la columna.
getTotalsCalculation()TotalsCalculationFunción de agregado total.
setTotalsCalculation(calc)void- El conjunto de la agrupamiento total.
getTotalsRowLabel()StringEtiquetas en la línea total.
setTotalsRowLabel(label)voidToma la etiqueta total de línea.
getTotalsRowFormula()StringFormulario personalizado para la línea total.
setTotalsRowFormula(formula)voidEntra en la fórmula total.

Limitaciones

  • Los enlaces de datos de la tabla no son modificables por separado; la Tabla cubre el rango de tiempo de creación. uso resize() ajustar el rango cubierto.
  • Los estilos de mesa personalizados deben definirse en el libro antes de referenciarlos. por nombre via setTableStyleName().

Ver también

 Español