leer - php-excelreader
PHP-¿Tipo de archivo de hoja de cálculo de solo lectura? (3)
AFAIK, al menos en Windows, depende de lo que haga el usuario con el mensaje que muestra el navegador cuando sigue el enlace.
Si el usuario elige guardar el archivo, no será de solo lectura. Si el usuario elige abrirlo, el archivo se guardará en un directorio temporal y el navegador puede eliminarlo cuando se cierre. No estoy seguro de cómo funciona este mecanismo, pero supongo que hay un bloqueo involucrado en algún lugar que hace que el archivo sea solo de lectura.
Estoy usando una aplicación PHP simple basada en web que genera una tabla como una hoja de cálculo
header("Content-Disposition: attachment; filename=" . $filename . ".xls");
header("Content-Type: application/vnd.ms-excel");
//inserts tab delimited text
Pero estoy descubriendo que la hoja de cálculo descargada se abre como un archivo de solo lectura y debe guardarse localmente y (en Excel en Windows) el tipo cambiado a XLS (desde HTML). ¿Hay alguna manera de establecer el atributo de tipo de archivo correctamente para que hacer un simple guardado no requiera corregir el tipo de archivo?
¿Se descarga el archivo de solo lectura por naturaleza de la seguridad o esto no es normal?
Además, no me gustan los bordes automáticos creados al abrir la hoja de cálculo en Excel u OpenOffice (en Linux). Preferiría no tener ningún formato de borde. ¿Hay alguna manera en el archivo para especificar que no hay formateo agregado o está integrado en esas aplicaciones?
No sé de qué versión de Excel está hablando, por lo que supongo que está utilizando una versión 2007 o posterior.
El problema de cambio de extensión probablemente dependa de una característica de Office llamada " Endurecimiento de la extensión "; Hasta donde yo sé, la única solución es generar un archivo Excel real (por ejemplo, usando el conjunto de clases PHPExcel ), y no un archivo HTML.
Los archivos descargados son de solo lectura por razones de seguridad, ya que se abren en la llamada " Vista protegida ":
Los archivos de Internet y de otras ubicaciones potencialmente inseguras pueden contener virus, gusanos u otros tipos de malware que pueden dañar su computadora. Para ayudar a proteger su computadora, los archivos de estas ubicaciones potencialmente inseguras se abren en la Vista protegida. Al usar Vista protegida, puede leer un archivo e inspeccionar su contenido a la vez que se reducen los riesgos que pueden ocurrir.
Finalmente, una palabra sobre bordes y formato: con la versión anterior de Excel 2000, podría formatear la salida simplemente agregando algunas etiquetas XML en la sección del encabezado del código HTML; consulte la " Referencia de HTML y XML de Microsoft Office " para obtener más detalles y ejemplos, pero tenga en cuenta que es bastante obsoleto, por lo que no creo que esta técnica todavía funcione con las versiones de Excel más recientes.
Si desea tener más control sobre la salida generada, no debe usar HTML simple para crear el archivo de la hoja de cálculo.
En esta publicación también puede encontrar algunas alternativas a PHPExcel para escribir archivos de Excel.
Si desea guardar localmente, puede establecer el atributo content-description
:
header(''Content-Description: File Transfer'');
header(''Content-Type: application/vnd.ms-excel'');
header("Content-Disposition: attachment; filename=" . $filename . ".xls");
EDITAR
Si imprime el texto delimitado por tabulaciones y asigna content-disposition
como xls o csv, la aplicación de Excel (u otro programa, como gnumeric u openoffice) lo reconoce como xls o csv.