Pregunta

Estoy recopilando algunos datos a través de un script Perl. Los datos deben ser revisados ??y procesados ??por otros usando Excel. Actualmente, estoy escribiendo los datos como un archivo de texto delimitado por tabulaciones, y Excel puede abrir esto muy bien.

Sin embargo, los datos tienen una jerarquía y sería más fácil para los revisores ver un árbol en lugar de una lista plana. Es decir, en lugar de presentar los datos en columnas,

foo    foo1
foo    foo2
foo    foo3
bar    bar1
bar    bar2
...

presentarlo como un árbol de hacer clic para expandir:

foo
    foo1
    foo2
    foo3
bar
    bar1
    bar2
...

La función de grupo de Excel (encontrada en 2007 bajo " Datos > Esquema > Grupo ") es una buena combinación para esta presentación, siendo un poco más simple de operar que las tablas dinámicas.

¿Cuál es la forma más fácil para nosotros de pasar de esta lista plana de columnas a esta lista agrupada? Idealmente, podría escribir los datos en forma de texto para que Excel aplicara la agrupación automáticamente cuando se importara. Alternativamente, si hubiera un pequeño número de pasos que el revisor podría aplicar después de importar los datos, como aplicar una macro o una plantilla, eso también estaría bien.

¿Fue útil?

Solución

Como ya está usando perl, le sugiero que cree el archivo de Excel directamente en perl usando el excelente módulo CPAN Hoja de cálculo :: WriteExcel que tiene soporte para contornos de Excel .

Funciona de esta manera:

     .
     .
     $worksheet->write('A2',  'foo');
     $worksheet->write('B3',  'foo1');
     $worksheet->write('B4',  'foo2');
     $worksheet->write('B5',  'foo3');
     $worksheet->set_row(2,  undef, undef, 0, 1, 1);
     $worksheet->set_row(3,  undef, undef, 0, 2);
     $worksheet->set_row(4,  undef, undef, 0, 2);
     $worksheet->set_row(5,  undef, undef, 0, 2);
     .
     .

Otros consejos

  1. Seleccione todas las filas, incluidos los encabezados de columna, en la lista que desea filtrar.

    ShowTip   Haga clic en la celda superior izquierda del rango y luego arrastre hacia la celda inferior derecha.

  2. En el menú Datos, seleccione Filtro y luego haga clic en Filtro avanzado.
  3. En el cuadro de diálogo Filtro avanzado, haga clic en Filtrar la lista, en su lugar.
  4. Seleccione la casilla de verificación Solo registros únicos y luego haga clic en Aceptar.

    Se muestra la lista filtrada y se ocultan las filas duplicadas.

  5. En el menú Editar, haga clic en Portapapeles de Office.

    Se muestra el panel de tareas del Portapapeles.

  6. Asegúrese de que la lista filtrada todavía esté seleccionada, y luego haga clic en el botón Copiar Copiar.

    La lista filtrada se resalta con contornos delimitadores y la selección aparece como un elemento en la parte superior del Portapapeles.

  7. En el menú Datos, seleccione Filtro y luego haga clic en Mostrar todo.

    La lista original se vuelve a mostrar.

  8. Presione la tecla ELIMINAR.

    La lista original se elimina.

  9. En el Portapapeles, haga clic en el elemento de la lista filtrada.

    La lista filtrada aparece en la misma ubicación que la lista original.

Las versiones recientes de Excel (2003 es lo que usamos aquí) pueden usar un formato XML, xlsx. Un archivo xlsx es un zip de un archivo XML. Si desea crear un archivo que se abrirá en Excel con la configuración que desee, intente esto: primero cree un archivo de plantilla con la agrupación que desee. Guárdalo como xlsx. Descomprima el archivo con su software zip estándar. Echa un vistazo a lo que hay dentro. No he trabajado específicamente con la agrupación, pero todos los comandos en su hoja de cálculo estarán allí en forma xml, necesitará averiguar dónde se establece la agrupación. Entonces es cuestión de hacer los cambios apropiados al xml y volver a comprimir. Un poco de esfuerzo, pero puede usar este método para crear mediante programación archivos que están preagrupados. Puede haber bibliotecas Perl específicamente orientadas a esto, no lo sé.

Un archivo CSV también es muy fácil de generar. OpenOffice le permite elegir cómo analizar las cosas, pero Excel excluye las columnas delimitadas por comas (sin ningún tipo de comillas) y las filas delimitadas por CRLF.

A1,A2,A3
B1,B2,B3

etc.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top