DOCAP combinado Calc + Writer
También es posible crear docap complejos empleando dos archivos del mismo servicio: dos hojas de cálculo o dos documentos de texto). Pero tampoco tenemos por qué limitarnos a utilizar dos documentos.
Eso es precisamente lo que he hecho en esta ocasión: utilizar dos hojas de cálculo como componentes básicos del docap y opcionalmente un documento Writer; este último de cumplirse una condición. La imagen anterior representa la composición del modelo de docap complejo que expondré en esta entrada.
En ella me voy a limitar a explicar el funcionamiento de este modelo de docap y mostrar las instrucciones fundamentales de su código, pero si deseas saber qué objetivo se persigue con el docap concreto que utilizo de ejemplo, deberás leer [esta entrada]. También dispones de un vídeo en [YouTu.be] para visualizar su funcionamiento.
Veamos ahora la estructura de componentes del docap, empezando por visualizar su esquema general.
... y mediante script accedo al contenido de estas celdas para asignarlos a una matriz.
oHojaDatos = ThisComponent.getSheets().getByName("Datos")For i = 1 To 3oCelda = oHojaDatos.getCellRangeByName("B" & i)sDatosPer(i-1) = oCelda.getString()Next
For i= 1 To 500
oCeldaInicio = oHojaLista.getCellByPosition(0,i)
sContenido = oCeldaInicio.getString()
If sContenido = "" Then
For a =0 To 4
oCeldaInicio = oHojaLista.getCellByPosition(a,i)
oCeldaInicio.setString(mListado(a))
Next
Exit For
End If
Next
mOpciones(0).Name="AsTemplate"mOpciones(0).Value=TruemOpciones(0).Name="MacroExecutionMode"mOpciones(0).Value=4sRuta = ConvertToUrl("D:\ModeloExpediente.ods")oDoc = StarDesktop.loadComponentFromURL( sRuta, "_blank", 0, mOpciones() )
Segunda: La plantilla Ficha genera automáticamente el documento que concreta la ficha del alumno y que se archiva dentro de la carpeta Expedientes. Dentro de este archivo se concreta el doble proceso de traslado de datos al listado de campos y su asociación a un conjunto de celdas que muestras dichos datos en formato ficha (de ahí el nombre del documento.
Posteriormente se accede al contenidos de determinados campos...
For i=0 To 10
oCelda(i) = oHojaDatos.getCellRangeByName( "A" & i+1 )
sDatos(i) = oCelda(i).getString
Next
... para posteriormente analizar los datos que contienen y que se consideran relevantes (2).
If iTotalDif = 0 Then
sValorDif = " no existe diferencia en cuanto al númer de documentos, lo que indica que el expediente se ha mantenido actualizado hasta el momento."
ElseIf iTotalDif > 0 Then
sValorDif = "una reducción del número de archivos (" & ABS(iTotalDif) & " documentos)"
ElseIf iTotalDif < 0 Then
sValorDif = "un incremento del número de archivos (" & ABS(iTotalDif) & " documentos)"
End If
If dPorcentajeDif > 25 Then
CrearInfo (sIdentificador,sNumDoc,sAnalisisTotal,sValoraPorcentaje)
Else
MsgBox ("ANÁLISIS DE RESULTADOS: " & Chr(13) & sIdentificador & Chr(13) & sNumDoc & " " & sAnalisisTotal & " " & sValoraPorcentaje)
End If
Tercera: Esta fase se desarrolla bien dentro de Ficha, cuando no se considera necesario crear un informe (3) o, y de forma más específica y compleja, a partir del propio documento Writer Informe. En este caso se puede (también es opcional) aplicar una macro de formato. Esta macro es universal, pero podría estar específicamente creada para formatear dicho documento, aunque necesariamente deberá ser ubicada en Mis macros (4)
dim args4(4) as new com.sun.star.beans.PropertyValue
args4(0).Name = "CharFontName.StyleName"
args4(0).Value = ""
args4(1).Name = "CharFontName.Pitch"
args4(1).Value = 2
args4(2).Name = "CharFontName.CharSet"
args4(2).Value = -1
args4(3).Name = "CharFontName.Family"
args4(3).Value = 5
args4(4).Name = "CharFontName.FamilyName"
args4(4).Value = "Verdana"
dispatcher.executeDispatch(document, ".uno:CharFontName", "", 0, args4())
No hay comentarios:
Publicar un comentario
Comenta esta entrada