Una forma de utilizar Excel en ASP es vincular el archivo de Excel como una base de datos, y luego la operación es similar a la operación de acceso a la base de datos. Sin embargo, este método no siempre es útil porque Excel no es una base de datos relacional. Para un formato fijo, que tiene fusiones de celdas complejas, estilos de líneas de borde, patrones, relaciones de fórmulas entre celdas, etc., creo que la forma más fácil de entender es abrir una configuración existente en segundo plano. Crear un archivo de plantilla y luego insertar datos donde necesario, guardar y generar...
El método mencionado aquí es crear directamente un objeto de Excel, lo que facilita la realización de varias operaciones en el documento de Excel en segundo plano.
Otra cosa que se debe configurar en el lado del servidor es el permiso de operación del componente COM. Escriba "DCOMCNFG" en la línea de comando para ingresar a la interfaz de configuración del componente COM. Seleccione Microsoft Excel y haga clic en el botón Propiedades. Seleccione Personalizado para las tres opciones de radio. Durante la edición, agregue Todos a todos los permisos. Después de guardar, reinicie el servidor.
Es muy importante. Si no está configurado, otras computadoras no podrán completar la creación de objetos de Excel.
Sin embargo, este método también tiene una desventaja: en mi operación real, si ya hay un archivo de Excel abierto en el servidor y luego ejecuto el mismo archivo, todavía no entiendo por qué. lugares que no han sido habilitados.
Además, el formato del código de ejemplo en el artículo citado anteriormente no está completo y muchos de los saltos de línea y espacios no están en el formato correcto. Si el código está completo, simplemente cópielo y se ejecutará correctamente, y luego investigue lentamente. Y modifíquelo, será fácil comenzar. Ahora el código modificado es el siguiente (la parte que dibuja el gráfico se ha eliminado):
<%
En caso de error Continuar siguiente
strAddr=Servidor.MapPath(".")
establecer objExcelApp=CreateObject("Excel.Application")
objExcelApp.DisplayAlerts=falso
objExcelApp.Application.Visible=falso
objExcelApp.WorkBooks.Open(strAddr&"TempletNull.xls")
establecer objExcelBook=objExcelApp.ActiveWorkBook
establecer objExcelSheets=objExcelBook.Worksheets
establecer objExcelSheet=objExcelBook.Sheets(1)
objExcelSheet.Range("B2:k2").Value=Array("Semana1","Semana2","Semana3","Semana4","Semana5","Semana6","Semana7 ")
objExcelSheet.Range("B3:k3").Value=Array("67","87","5","9","7","45","45","54","54" , "10")
objExcelSheet.Range("B4:k4").Value=Array("10","10","8","27","33","37","50","54","10" , "10")
objExcelSheet.Range("B5:k5").Value=Array("23","3","86","64","60","18","5","1","36" , "80")
objExcelSheet.Cells(3,1).Value="InternetExplorer"
objExcelSheet.Cells(4,1).Value="Netscape"
objExcelSheet.Cells(5,1).Value="Otro"
objExcelSheet.Range("b2:k5").Seleccione
Guardar como(strAddr&"TempExcel.xls")
objExcelApp.Salir
establecer objExcelApp=Nada
%>
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transicional//ES">
<HTML>
<CABEZA>
<TITLE>NuevoDocumento</TITLE>
<METANAME="Generador"CONTENT=" MicrosoftFrontPage5.0">
<METANAME="Autor"CONTENIDO="">
<METANAME="Palabras clave"CONTENIDO="">
<METANAME="Descripción"CONTENIDO="">
</CABEZA>
<CUERPO>
</CUERPO>
</HTML>
Después de operar el archivo de Excel, debe generar el archivo. Para hacerlo, use el método de redireccionamiento de ASP a Excel. A veces se abre directamente en IE y, a veces, aparece la ventana "Descargar, abrir, guardar". para abrirlo directamente en IE, simplemente use FSO para cargar el archivo de Excel y luego enviarlo a IE.
<%
Dim Fso,ExtArchivo,strFilePath,Mime
strFilePath = "f:aspxuexi.doc"
Establecer Fso=Server.CreateObject("Scripting.FileSystemObject")
FileExt = Fso.GetExtensionName(strFilePath)
Establecer fso=Nada
Seleccionar caso FileExt
Caso "doc"
Mime="Aplicación/msword"
Funda "xls"
Mime="Aplicación/msexcel"
Finalizar seleccionar
salida de llamada (strFilePath, Mime)
'####################################### # #############
Salida de función (strFilePath, Mime)
Response.ContentType = Mimo
Tipo de anuncio constanteBinario = 1
Establecer objStream = Server.CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = adTypeBinary
objStream.LoadFromFile strFilePath
Respuesta.BinaryWrite objStream.Read
objStream.Cerrar
Establecer objStream = Nada
Función final
'############################################### ## ###
%>
en aplicaciones prácticas. Cuando el servidor ejecuta el programa Excel o ACCESS, el cliente envía para crear Excel. El objeto de la aplicación no puede tener éxito. En otra situación, cuando un cliente envía una solicitud, esta no finaliza y la solicitud enviada por otro cliente no puede tener éxito. Puede haber otras soluciones a este problema, pero al menos esta es inestable.
Resultó que había ejemplos exitosos relacionados en la intranet de nuestro departamento. Cuando los desenterré, descubrí que estaban creando Excel en el cliente. solicitud. De esta forma, no habrá más conflictos del lado del servidor. Para el cliente, debido a que se ejecuta en la LAN, el nivel de seguridad de IE del cliente se puede configurar bajo y el activo relevante (Investigación), incluso si no hay ninguna configuración, IE mostrará una ventana de advertencia: "¿Tiene permiso para ejecutar activeX?"
El código implementado es similar al registro anterior y es simplemente el siguiente:
<script language="vbscript">
establecer objExcelApp=CreateObject("Excel.Application")
objExcelApp.DisplayAlerts=true
objExcelApp.WorkBooks.Open(" http://XXX.XXX.XXX/XXX.xls ")
'El archivo xls de la dirección de red completa. Este archivo ha sido formateado, impreso y guardado en el servidor.
establecer objExcelBook=objExcelApp.ActiveWorkBook
establecer objExcelSheets=objExcelBook.Worksheets
establecer objExcelSheet=objExcelBook.Sheets(1)
'====Aquí están las declaraciones para completar datos en celdas de Excel. Si los datos se extraen de la base de datos, estas declaraciones pueden ser generadas por el programa en segundo plano.
'Por ejemplo: respuesta.escribir "objExcelSheet.Range(""B2"").Value="""&rs("XXX")&""""
'o objExcelSheet.Range("B2").Value="<%=rs("XXX")%>"
objExcelSheet.Range("B2:k2").Value=Array("Semana1","Semana2"," Semana3","Semana4","Semana5","Semana6","Semana7")
objExcelSheet.Range("B3:k3").Value=Array("67","87","5","9","7","45","45","54","54" , "10")
objExcelSheet.Range("B4:k4").Value=Array("10","10","8","27","33","37","50","54","10" , "10")
objExcelSheet.Range("B5:k5").Value=Array("23","3","86","64","60","18","5","1","36" , "80")
objExcelSheet.Cells(3,1).Value="InternetExplorer"
objExcelSheet.Cells(4,1).Value="Netscape"
objExcelSheet.Cells(5,1).Value="Otro"
'===================
'objExcelApp.Salir
'establecer objExcelApp=Nada
</script>
En el código anterior
'objExcelApp.Salir
'set objExcelApp=No
se utiliza nada como cancelación, porque no cierre excel.application aquí; de lo contrario, Excel se cerrará después de completar los datos. En este momento, el cliente debe modificar o imprimir el archivo Excel abierto en el cliente. Al mismo tiempo, el objeto objexcelapp también tiene métodos para imprimir configuraciones e ingresar a la interfaz de vista previa de impresión. Consulte la información relevante relacionada con Excel.