Como crear varios archivos CSV a partir de ejecucion de servicio web

publicado por: Anonymous

En mi programa que llama a ciertos servicios web, me gustaria que en el resultado final se crearan differentes archivos CSV dependiendo si el ProjectID es diferente

En el codigo siguiente, en el filtro del array de projectIDs el llama a todos los numeros de proyecto, y lo manda a la llamada de servicio final.

En este momento el archivo final solo es uno solo contieniendo los 2 projectos diferentes.

Lo que busco hacer es que por cada projectID que exista, un archivo CSV se cree diferente y por ende se descargue.

Como puedo hacer esto?

Aqui esta el codigo:

Muchas gracias.

    string ExportTasksForAllProjects = "ExportTasksForAllProjects";
string outCsvFile = string.Format(@"C:\ExportTasksForAllProjects\{0}.csv", ExportTasksForAllProjects + DateTime.Now.ToString("_yyyyMMdd HHmms")); //+ DateTime.Now.ToString("_yyyyMMdd HHmms") +  "_" + Guid.NewGuid() + );
String newLine = "";
var stream = File.CreateText(outCsvFile);

 WS.UserData[] userDataId = client.GetUserData(DataSourceId);

    List<string> multiUserIDs = new List<string>();

        foreach (var userdata in userDataId)
        {
            multiUserIDs.Add(userdata.List[0].ToString());
        }

        foreach (WS.ProjectMetaData proj in pr)
        {                                          
            string temp = "";   
            var AllProjectIds = proj.ProjectID;
            string[] projectIDs = new string[] { AllProjectIds }; // all projects       

            WS.TaskEntry[] resultGT3 = client.GetTasks3(projectIDs, multiUserIDs.ToArray());

            foreach (var item in resultGT3)
            {
                newLine = item.ProjectID + "," +
                    item.UserID + "," +
                    item.ProjectTitle + "," +
                    item.StartDate;

                stream.WriteLine(newLine);
            }
            stream.Close();  
        }

solución

Existen varias soluciones, una forma sería usando File.CreateText() para crear los diferentes archivos:

string outCsvFile = string.Format(@"C:\ExportTasksForAllProjects\{0}.csv", ExportTasksForAllProjects + DateTime.Now.ToString("_yyyyMMdd HHmms"));
String newLine = "";
var stream = File.CreateText(outCsvFile);

   foreach (var item in resultGT3)
            {
               newLine  =      item.ProjectID + "," +
                                item.UserID + "," +
                                item.ProjectTitle + ","+
                                item.StartDate;

                      stream.WriteLine(newLine);

             }
     stream.Close();

Con esto puedes crear tus archivos .csv conteniendo los valores que se contienen dentro de resultGT3:

introducir la descripción de la imagen aquí

Update:
Para crear diferentes archivos por proyecto:

foreach (WS.ProjectMetaData proj in pr)
       {     
        string outCsvFile = string.Format(@"C:\ExportTasksForAllProjects\{0}.csv", ExportTasksForAllProjects + DateTime.Now.ToString("_yyyyMMdd HHmms")); //+ DateTime.Now.ToString("_yyyyMMdd HHmms") +  "_" + Guid.NewGuid() + );
        String newLine = "";
        var stream = File.CreateText(outCsvFile);
        ...
        ...
        ...
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *