Mostrar múltiples columnas en la imagen del gráfico Gantt renderizado

Descripción general

En Microsoft Project, los datos del proyecto no solo están disponibles en forma textual, sino que también se pueden mostrar gráficamente como un gráfico. Los tipos de gráficos más populares son el gráfico Gantt, el uso de tareas y el uso de recursos. Aspose.Tasks para .NET admite la representación de los datos del proyecto a un gráfico.

Este artículo describe dos enfoques que permiten personalizar las columnas del proyecto para incluirse en un grado de Gantt y demuestra cómo convertir el gráfico en una imagen.

Gantt Chart

Una tabla Gantt es una representación gráfica de las tareas del proyecto desglosadas por días, semanas o meses. Un proyecto está compuesto por tareas asignadas a diferentes recursos. Una tarea individual puede dividirse en subasinas como parte de la gestión de tareas. Cada tarea tiene una fecha de inicio y una fecha de finalización que determina su duración. Una tabla Gantt en el proyecto Microsoft ofrece una vista rápida de dichos datos del proyecto. Esta captura de pantalla muestra una tabla Gantt típica en el proyecto Microsoft:

Gráfico Gantt representado por Microsoft Project

Imagen del gráfico Gantt en Aspose.Tasks para .NET

En Aspose.Tasks para .NET, la clase de proyecto es la clase principal para manejar los archivos del proyecto. La clase de proyecto expone diferentes sobrecargas si el método “Guardar” para exportar datos del proyecto a diferentes formatos de archivo. Los usuarios pueden configurar este método para exportar datos del proyecto a cualquier formato compatible pasando parámetros.

Por ejemplo, considere la sobrecarga Guardar (String, SaveOptions).

Tipo de SaveOptions

El comportamiento de representación se puede personalizar utilizando la clase de propiedades de SaveOptions (o uno de sus herederos). Por ejemplo, el tamaño de la página del documento de salida se puede establecer utilizando SaveOptions.CustOPAGEZE PROPIEDAD o SAVEDOOPTIONS.LEGENDONEACHPAGE se puede establecer para definir si se debe mostrar una leyenda en cada página.

1PDFSaveOptions SaveOptions = new PDFSaveOptions ()
2{
3   CustomPageSize = nuevo sizef (800, 600),
4   LegendOeachPage = falso
5};

Hay al menos dos enfoques para personalizar la apariencia del gráfico renderizado.

Personalizar columnas de gráfico Gantt usando el tipo de View ProjectView

Tenga en cuenta que es una forma obsoleta de personalizar la apariencia y es menos probable que se extienda o mejore en el futuro. La clase ProjectView tiene una funcionalidad limitada y puede usarse para mostrar columnas específicas en la imagen de salida. Un constructor de esta clase toma una lista de matriz de la clase Ganttchartcolumn como argumento. La instancia de ProjectView resultante debe establecerse como un valor de SavePtions.View Propiedad. El código de ejemplo muestra cómo funciona:

 1// Crea las columnas de vista
 2columnas var = nueva lista <GantTChartColumn> ();
 3columns.Add (new GantTChartColumn ("Nombre", 100, New TaskTocolumnTextConverter (TaskName)));
 4columns.Add (nuevo ganttchartcolumn ("notas", 100, taskTocolumnTextConverter (tareas)));
 5columns.Add (nuevo ganttchartcolumn ("recursos", 200, new TaskTocolumnTextConverter (TaskResources)));
 6// Crear la vista
 7ProjectView ProjectView = new ProjectView (columnas);
 8
 9// Crear saveOptions
10PDFSaveOptions SaveOptions = new PDFSaveOptions ()
11{
12   CustomPageSize = nuevo sizef (800, 600),
13   Ver = ProjectView
14};
15
16// Guardar el proyecto en PDF.
17Project.save ("output.pdf", SavePtions);

El constructor de la clase GanttchartColumn toma tres argumentos: el nombre de la columna, el ancho y un delegado TaskTocolumnTextConverter) para convertir los datos de la tarea en texto de columna. En el ejemplo del código anterior, TaskTocolumnTextConverter delegado llama a tres métodos de destino, nombre de tarea, TaskNotes y Taskresurces, para convertir los datos en estas columnas a texto. Los tres métodos se implementan en el siguiente ejemplo de código.

 1/// <summary>
 2/// Convierte los datos de nombre de una tarea en texto de columna.
 3/// </summary>
 4/// <param name = "tarea"> Tarea actual. </marc>
 5/// <deude> El texto de la columna. </devuelve>
 6TaskName de tareas de cadena privada (tarea de tarea)
 7{
 8    StringBuilder res = new StringBuilder ();
 9    para (int i = 1; i <task.outlinelevel; i ++)
10    {
11        res.append ("");
12    }
13
14    res.AppendFormat("{0}. {1}", task.Id, task.Name);
15    return res.ToString();
16}
17
18/// <summary>
19/// Convierte los datos de nombre de una tarea en texto de columna.
20/// </summary>
21/// <param name = "tarea"> Tarea actual. </marc>
22/// <deude> El texto de la columna. </devuelve>
23String private TaskNameHTML (Tarea Tarea)
24{
25    StringBuilder res = new StringBuilder ();
26    para (int i = 1; i <task.outlinelevel; i ++)
27    {
28        res.append ("");
29    }
30
31    res.AppendFormat("{0}. {1}", task.Id, task.Name);
32    return res.ToString();
33}
34
35/// <summary>
36/// Convierte los datos de notas de una tarea en texto de columna.
37/// </summary>
38/// <param name = "tarea"> Tarea actual. </marc>
39/// <deude> El texto de la columna. </devuelve>
40Tasknotes de cadena privada (tarea de tarea)
41{
42    if (task.notestext! = null)
43        return task.noteStext;
44    demás
45        return string.empty;
46}
47
48/// <summary>
49/// Convierte los datos de recursos de una tarea en texto de columna.
50/// </summary>
51/// <param name = "tarea"> Tarea actual. </marc>
52/// <deude> El texto de la columna. </devuelve>
53Taskresources de cadena privada (tarea de tarea)
54{
55    StringBuilder res = new StringBuilder ();
56    Proyecto Project = task.parentProject;
57    bool bfirst = true;
58    foreach (asignación de indicadores de reseñas en Project.getResourceassignmentsByTask (tarea))
59    {
60        if (asignación.resource! = nulo)
61        {
62            if (! bfirst)
63            {
64                res.append (",");
65            }
66 
67            res.Append(assignment.Resource.Name);
68            bFirst = false;
69        }
70    }
71
72    return res.ToString();
73}

La siguiente es la imagen y la imagen HTML producida con el código de ejemplo:

HTML resultante exportado por Aspose.Tasks 1 HTML resultante exportado por Aspose.Tasks 2

Personalizar columnas de gráfico Gantt usando el tipo de vista

La clase de vista de uso y sus herederos es una forma recomendada de personalizar los gráficos al renderizar los datos del proyecto. La clase de vista corresponde a la configuración de vista utilizada en el proyecto MS (que se almacenan en el archivo MPP) y proporciona una API más rica en comparación con la API de ProjectView. Las propiedades disponibles de la clase de vista se pueden encontrar en referencia de API. Se puede tomar la vista existente (para proyectos cargados desde el archivo MPP con las vistas guardadas por Microsoft Project), personalizadas y pasadas a Project.Save Method como se demuestra en el siguiente fragmento de código:

 1Proyecto proyecto = nuevo proyecto ("input.mpp"));
 2
 3// Obtener vista existente.
 4var ver = (ganttchartview) proyecto.views.getByName ("& gantt Chart");
 5
 6// Defina e inserte una nueva columna en la vista.
 7Tablefield campo = nuevo tablefield ()
 8{
 9    AlignData = stringalignment.far,
10    Ancho = 50,
11    Campo = field.TaskName,
12    Title = "Nombre de la tarea"
13};
14
15ver.table.tablefields.insert (1, campo);
16PDFSaveOptions SaveOptions = new PDFSaveOptions ()
17{
18    Vistas = Ver
19};
20
21Project.save ("output.pdf", SavePtions);
Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.