2011-05-18 25 views
9

En una aplicación web, estoy generando un XML de hoja de cálculo utilizando una plantilla XSL creada a partir de Excel 2010. Quiero que este XML de hoja de cálculo se abra en Excel de manera predeterminada. Así, añado las propiedades siguientes para la respuestaAbrir hoja de cálculo xml en Excel de forma predeterminada

Response.ContentType = "application/vnd.ms-excel"; 
Response.AddHeader("Content-Disposition", "Attachment;Filename=export.xls"); 
Response.Charset = ""; 

Esto abre el archivo en Excel, pero debido a la extensión de las características de Excel 2010 endurecimiento, muestra el indicador -

El archivo que está intentando para abrir, 'export [1] .xls', está en un formato diferente de que el especificado por el archivo extensión. Compruebe que el archivo no está dañado y proviene de una fuente de confianza antes de abrir el archivo. ¿Desea para abrir el archivo ahora?

Si hago clic en sí, se abre bien. Pero, ¿hay alguna manera de omitir por completo el aviso? He leído sobre los cambios en el registro para deshabilitar la solicitud en la máquina de un usuario. Pero, este es un sitio web público y esa solución no funcionará.

Puedo establecer el nombre del archivo adjunto export.xml. Si lo guardo y abro en Excel, no hay un aviso. Pero el XML no se abrirá en Excel de manera predeterminada.

¿Alguna idea, para abrir la hoja de cálculo xml en Excel, sin el mensaje?

+0

¿Hay algún cambio si especifica "xlsx" como tipo? –

+0

@Mike: es peor, Excel no proporcionaría una opción para abrir. Simplemente muestra un mensaje de que la extensión del archivo no es válida, con solo un botón Aceptar. Puede ser que valga la pena mencionar que guardé la plantilla XSL como tipo "XML Spreadsheet 2003" – itsbalur

+0

¿Xlsx no es un xml comprimido? ¿Has intentado comprimir tu resultado? – pintxo

Respuesta

6

Este blog me ayudó a resolver mi problema.

http://www.shareyourwork.org/roller/ralphsjavablog/entry/generating_excel_sheets_with_xslt

El truco es añadir esta instrucción de procesamiento en su plantilla XSL en la forma mencionada en el post anterior.

<xsl:processing-instruction name="mso-application"> 
<xsl:text>progid="Excel.Sheet"</xsl:text> 
</xsl:processing-instruction> 

Al hacer esto, puede especificar la extensión de archivo como .xml, pero se abrirá en Excel de forma predeterminada.

+3

El enlace está muerto ahora. Parece haberse mudado aquí: http://www-02.imixs.com/roller/ralphsjavablog/entry/generating_excel_sheets_with_xslt – technomalogical

Cuestiones relacionadas