1. Introducción La impresión de informes suele ser un módulo importante en el sistema de información de gestión, y Excel se ha utilizado ampliamente en la impresión de informes debido a sus potentes funciones, aplicación flexible y gran versatilidad.
El sistema de información de gestión inicial se desarrolló básicamente utilizando el modelo cliente/servidor (C/S). Sin embargo, con la aplicación generalizada de WWW, el sistema de información de gestión actual ha comenzado a pasar gradualmente del modelo C/S al navegador/servidor. (B /S) cambio de modo. El modo B/S tiene muchas características que el modo C/S tradicional no puede igualar, como ser más abierto, independiente del software y hardware, conveniente para la expansión de aplicaciones y el mantenimiento y actualizaciones del sistema, etc. Ahora se ha convertido en el modo informático preferido. para redes empresariales Se utilizó originalmente en C/S. Muchos software en Internet han comenzado a trasplantarse al modo B/S. Debido a la particularidad del modo B/S, la función de impresión de informes de Excel que es relativamente fácil de implementar en C/S se ha convertido en una dificultad en B/S. Este artículo ofrece un mejor método general basado en la experiencia resumida en proyectos reales, tomando ASP como ejemplo.
2. Implementación de funciones Para ilustrar el problema, aquí hay un ejemplo. La plataforma del sistema es Windows 2000+SQL Server 2000+IIS 5.0+ASP 3. El informe utiliza Excel. Es necesario generar un informe de estadísticas de ventas de libros de acuerdo con el formato de informe dado y poder imprimirlo.
2.1 Producción de una plantilla de informe de Excel Primero, cree una plantilla de Excel (es decir, la forma del informe que se va a imprimir) de acuerdo con el formato de informe dado. Por supuesto, los datos generados a partir de las estadísticas dinámicas en la base de datos deben dejarse en blanco. Este informe se elabora primero en Excel, luego se guarda como plantilla y se almacena aquí, aquí como testbook1.xlt.
2.2 Generación e impresión de informes de Excel Aquí se utiliza el componente Aplicación de Excel, que se instala en el sistema cuando se instala Excel. Nuestras operaciones también están dirigidas a este componente.
(1) Crear objeto Excel.Application
establecer objExcel=CreateObject("Excel.Aplicación")
(2) Abra la plantilla de Excel
objExcel.Workbooks.Open(server.mappath("test")&"book1.xlt") 'Abrir plantilla de Excel
objExcel.Sheets(1).select 'Seleccione la página de trabajo
establecer hojaActive=objExcel.ActiveWorkbook.ActiveSheet
(3) Las operaciones de suma habituales de Excel, como SheetActive.range("g4").value=date() 'Lo que se agrega aquí es tiempo, por supuesto, también puede ser cualquier dato que especifique.
(4) Agregar registros en la base de datos en Excel. Se supone que ya existe un conjunto de datos adoRset, que almacena datos estadísticos generados por operaciones SQL.
num=7 'Comienza desde la séptima fila de Excel
hacer hasta adoRset.EOF 'Bucle hasta que se escriban los datos en el conjunto de datos
strRange="d"&num&":f"&num 'Establece el área de la unidad para completar el contenido
SheetActive.range(strRange).font.size=10 'Establecer tamaño de fuente
SheetActive.range(strRange).WrapText=false 'Establecer ajuste de texto
SheetActive.range(strRange).ShrinkToFit=true 'Establece si se adaptará automáticamente al tamaño de la unidad de la tabla
SheetActive.range(strRange).value=array(adoRset("bookid"),adoRset("bookname"),adoRset("author")) 'Complete los datos del conjunto de datos en la unidad correspondiente
número=número+1
adoRset.MoveNext
bucle
(5) Guardar y procesar archivos de informes temporales de Excel En la operación real, debe tenerse en cuenta que cada vez que un usuario imprime un informe, se utiliza un archivo temporal de Excel en lugar de especificar rígidamente el nombre del archivo, porque si es un nombre de archivo fijo. usado, solo el primero Una vez que la generación sea exitosa, las operaciones posteriores fallarán porque ya existe un archivo con el mismo nombre. Por lo tanto, necesitamos generar un nombre de archivo temporal y no repetitivo cada vez. Aquí podemos usar la función getTemporaryFile() personalizada para generarlo y luego almacenarlo en la variable nombre de archivo y usar la variable filepos para representar las rutas de estos. archivos temporales.
Además, si estos archivos temporales no se procesan, con el tiempo se convertirán en archivos basura. Por lo tanto, cuando cada usuario envía una solicitud de impresión de informe de Excel, primero se deben eliminar todos los archivos de impresión temporales generados previamente en el directorio temporal.
El código principal para procesar archivos temporales es el siguiente:
función getTemporaryFile(myFileSystem)
archivo dimtemp, puntoPos
tempFile=myFileSystem.getTempName
dotPos=instr(1,archivotemp,".")
getTemporaryFile=mid(tempFile,1,puntoPos)&"xls"
función final
establecer myFs=createObject("scripting.FileSystemObject")
filePos=server.mappath("test") & "tmp" 'Directorio temporal para almacenar archivos de impresión temporales
fileName=getTemporaryFile(myFs) 'Obtener un nombre de archivo temporal
myFs.DeleteFile filePos&"*.xls" 'Elimina todos los archivos de impresión temporales generados originalmente en este directorio
establecer myFs = nada
El código para guardar archivos temporales de Excel es:
objExcel.ActiveWorkbook.saveas filePos&filename
(6) Salga de la aplicación Excel
objExcel.salir
establecer objExcel=Nada
(7) Impresión del informe de Excel Los pasos anteriores han generado el informe de Excel. Para imprimir en el siguiente paso, existen dos estrategias:
Opción 1: Proporcionar al usuario el enlace al archivo temporal del informe de Excel generado anteriormente. El usuario puede hacer clic directamente para abrir el informe de Excel en el navegador e imprimirlo a través de la función de impresión del navegador. También puede hacer clic derecho y guardar. localmente para imprimirlo, etc.
Opción 2: después de generar el informe de Excel, cárguelo directamente en el navegador del lado del cliente. Por supuesto, cuando no esté completamente cargado, debería aparecer "Cargando, espere" y otras palabras.
2.3 Configuración y precauciones del sistema Aunque el código anterior es muy simple, a menudo se producen errores si no se utiliza correctamente en la práctica, por lo que la configuración del sistema y las precauciones que se mencionan a continuación son muy críticas.
(1) Asegúrese de garantizar la exactitud de la entrada del código anterior; de lo contrario, una vez que se produzca el error de operación, el objeto de Excel permanecerá en la memoria y será difícil de eliminar, lo que provocará que la siguiente llamada sea extremadamente lenta y genere un error de Windows. que la memoria no se puede leer ni escribir. La solución en este momento es cerrar la sesión del usuario actual. Si eso no funciona, solo puede restablecer.
(2) Asegúrese de configurar los permisos del archivo asp responsable de la función de impresión. El método es: en la administración de IIS, seleccione el archivo ASP, haga clic con el botón derecho y seleccione "Propiedades"/"Seguridad de archivos"/"Acceso anónimo y control de autenticación. Aquí, IIS utiliza de forma predeterminada el acceso anónimo y debe seleccionar el acceso autenticado (). Aquí está la autenticación básica. Se pueden usar ambos métodos y la autenticación integrada de Windows, pero el primero no es lo suficientemente seguro), esto es extremadamente importante, de lo contrario se producirán errores en la aplicación.
(3) A veces, el informe se divide en varias páginas y queremos que cada página tenga el mismo encabezado. Requerimos que el encabezado se imprima automáticamente en cada página, lo que se puede configurar en la plantilla de Excel. El método es el siguiente: seleccione el menú "Archivo"/"Configuración de página"/"Hoja de trabajo" y luego ingrese el número de filas en su encabezado en la "Fila de título superior" (por ejemplo, si el encabezado son las filas 1- 3, complete: $1:$3).
3. En resumen, hemos dado un ejemplo de generación e impresión de informes EXCEL en modo B/S escritos en ASP, que se ha aplicado bien en la práctica. Los hechos también han demostrado que, aunque el código de este ejemplo no es difícil de escribir, se debe prestar atención a la configuración del sistema. Esta es también la experiencia adquirida después de innumerables fallas.