Clase TXLSForwardReader
TXLSForwardReader presenta una única superficie proyectada y controlada por devoluciones de llamada para la entrada de XLS clásico, XLSX moderno, ODS, CSV y TSV, sin construir un modelo de objetos de libro completo; adapta los mismos backends de cursor de filas que usa TXLSRowCursor presenta una superficie única proyectada y controlada por devoluciones de llamada para entradas XLS clásicas, XLSX modernas, CSV y TSV sin construir un modelo de objetos de libro completo
Formato de entrada
TXLSForwardFormat selecciona la detección automática o fuerza el análisis de XLS, XLSX, CSV o TSV
ReadFile abre un origen con nombre y ReadStream lee desde la posición actual del flujo del llamador, restaurando esa posición al regresar
Proyección y límites de filas
IncludeColumn agrega una columna basada en cero al conjunto de proyección de tiempo constante, ClearColumnProjection restaura la salida de todas las columnas y HasColumnProjection informa si la inserción está activa
FirstRow y LastRow aplican límites de filas basados en uno antes del envío de devoluciones de llamada, lo que permite que los analizadores se detengan después del intervalo solicitado
Devoluciones de llamada y conversión de valores
| OnSheet | Recibe el nombre de cada hoja de cálculo y puede omitir una hoja o abortar la lectura completa |
| OnCell | Recibe la fila, la columna, el índice de estilo, el tipo normalizado, el valor sin procesar y el texto de la fórmula de cada celda proyectada |
| IncludeFormulaText | Usa los formatos de número del libro para identificar valores de fecha y hora |
| DetectDates | Convierte campos CSV y TSV a tipos escalares admitidos cuando no hay ambigüedad |
| DetectTextTypes | Conserva los tramos con formato y la carga fonética cuando el formato de origen los admite |
| PreserveRichText | Sobrescribe el separador de campos de texto cuando la detección de formato no es adecuada |
| ValueSeparator | Sobrescribe el separador de campos de texto cuando la detección de formato no es adecuada |
HasFormula is false for ordinary values, while FormulaTextAvailable is true only when Formula contiene texto confiable; el XLS clásico informa los resultados de fórmula cacheados sin el texto de fórmula disponible, porque la ruta directa no descompila los tokens BIFF
Estado de finalización
CellCount reports dispatched cells and Aborted distingue la cancelación del llamador de la finalización normal
ClassicBytesRead informa el total de bytes consumidos por el analizador de XLS clásico (BIFF) y ClassicPeakBufferedBytes el máximo de bytes en búfer que mantuvo a la vez; ambos son diagnósticos de solo lectura para la ruta de XLS clásico
PeakRowBufferedBytes informa el mayor conjunto de trabajo estimado de filas lógicas retenido por el backend compartido, y SheetPassesStarted cuenta los pases de hojas de cálculo que se activaron; una hoja rechazada por OnSheet no abre su parte de hoja de cálculo ni incrementa el contador
Sheet indexes delivered through OnSheet informa de las celdas enviadas y OnCell distingue la cancelación del llamador de la finalización normal
Ejemplo
Reader := TXLSForwardReader.Create;
try
Reader.FirstRow := 2;
Reader.IncludeColumn(1);
Reader.IncludeColumn(5);
Reader.OnSheet := ReadSheet;
Reader.OnCell := ReadCell;
Reader.ReadFile('large-input.xlsx', xffAuto);
finally
Reader.Free;
end;Cómo elegir una API de streaming
Use TXLSForwardReader cuando una ruta de aplicación deba aceptar varios formatos, TXLSDirectReader para diseño específico de XLSX, texto enriquecido y eventos paralelos de hoja de cálculo, o TXLSRowCursor para iteración de filas XLSX impulsada por extracción