none
ayuda, excel a xml con subNodos o subTag RRS feed

  • Pregunta

  • Hola, es primera vez que entro a este tipo de foro ya que necesito ayuda, estoy realizando una aplicación web asp.net C#, que consiste en pasar un archivo Excel a XML. El problema que tengo es que el Excel cuenta con columnas repetidas (columna nombre) y tengo que usar subNodos (nombre,apellido_paterno...). Obtengo los datos, creo los TAG y con sus respectivos valores, genero los sub pero no de la forma deseada (como se muestra en el ejemplo xml). 

    no puedo subir la foto del excel pero aquí va el del xml que busco obtener 

    Ejemplo del XML que se desea construir  <o:p></o:p>

    <persona><o:p></o:p>

                   <id>12345</id><o:p></o:p>

                   <nombre_persona><o:p></o:p>

                   <nombre>carlos</nombre><o:p></o:p>

                   <apellido_paterno>perez</apellido_paterno><o:p></o:p>

                   <apellido_materno>gonzales</apellido_materno><o:p></o:p>

    </nombre_persona><o:p></o:p>

    <sexo>m</sexo><o:p></o:p>

                …..

     

    Código que se desarrollo <o:p></o:p>

    if (nomColLeft != nomColumna && nomColRigth != nomColumna)
                                    {
                                        if (j < tableRows)
                                        {
                                            xmlVar = xmlDoc.CreateElement(eliminarCaracteres(nomColumna));
                                            xmlVar.InnerText = arExcel[j + 1, i];
                                            firstTag.AppendChild(xmlVar);
                                        }
                                    }
                                    if (nomColLeft!=nomColumna && arExcel[j,i]==arExcel[tableRows,tableColums-1])
                                    {
                                        xmlVar = xmlDoc.CreateElement(nomTagColum);
                                        xmlVar.InnerText = arExcel[j, i-1];
                                        firstTag.AppendChild(xmlVar);
                                    }
                                    if (nomColumna.Equals(nomColRigth)||nomColumna.Equals(nomColLeft))
                                    {
                                        xmlVar = xmlDoc.CreateElement(eliminarCaracteres(nomColumna));
                                        string subN = arExcel[1, i];
                                        subN = eliminarCaracteres(subN);

                                        subNode = xmlDoc.CreateElement(eliminarCaracteres(subN));
                                        if(nomColumna.Equals(nomColRigth)&&nomColumna!= nomColLeft){
                                            subNode.InnerText = arExcel[j,i];
                                            xmlVar.AppendChild(subNode);
                                            firstTag.AppendChild(xmlVar);
                                        }

                                        if(nomColumna.Equals(nomColRigth)&&nomColumna.Equals(nomColLeft)){
                                            subNode.InnerText = arExcel[j, i];
                                            xmlVar.AppendChild(subNode);
                                            firstTag.AppendChild(xmlVar);

                                        }
                                        if(nomColumna.Equals(nomColLeft)&&nomColRigth!=nomColumna){
                                            subNode.InnerText = arExcel[j, i];
                                            xmlVar.AppendChild(subNode);
                                            firstTag.AppendChild(xmlVar);<o:p></o:p>

    resultado obtenido con el código <o:p></o:p>

    <persona><o:p></o:p>

                   <id>12345</id><o:p></o:p>

                   <nombre_persona><o:p></o:p>

                   <nombre>carlos</nombre><o:p></o:p>

    </nombre_persona><o:p></o:p>

    <nombre_persona><o:p></o:p>

                   <apellido_paterno>perez</apellido_paterno><o:p></o:p>

    </nombre_persona><o:p></o:p>

    <nombre_persona><o:p></o:p>

                   <apellido_materno>gonzales</apellido_materno><o:p></o:p>

    </nombre_persona><o:p></o:p>

    <sexo>m</sexo><o:p></o:p>

    …..<o:p></o:p>

    <o:p></o:p>

    • Cambiado Joyce_AC viernes, 16 de junio de 2017 17:52
    martes, 23 de mayo de 2017 3:51

Todas las respuestas

  • otra opción si saco  "firstTag.AppendChild(xmlVar);" de dos primeros if (como muestro en el siguiente código) y solo se grava uno (como se muestra en el resultado)

    if (nomColumna.Equals(nomColRigth)||nomColumna.Equals(nomColLeft))
                                    {
                                        xmlVar = xmlDoc.CreateElement(eliminarCaracteres(nomColumna));
                                        string subN = arExcel[1, i];
                                        subN = eliminarCaracteres(subN);

                                        subNode = xmlDoc.CreateElement(eliminarCaracteres(subN));
                                        if(nomColumna.Equals(nomColRigth)&&nomColumna!= nomColLeft){
                                            subNode.InnerText = arExcel[j,i];
                                            xmlVar.AppendChild(subNode);
                                            
                                        }

                                        if(nomColumna.Equals(nomColRigth)&&nomColumna.Equals(nomColLeft)){
                                            subNode.InnerText = arExcel[j, i];
                                            xmlVar.AppendChild(subNode);
                                            

                                        }
                                        if(nomColumna.Equals(nomColLeft)&&nomColRigth!=nomColumna){
                                            subNode.InnerText = arExcel[j, i];
                                            xmlVar.AppendChild(subNode);
                                            firstTag.AppendChild(xmlVar);

    resultado obtenido con el código <o:p></o:p>

    <persona><o:p></o:p>

                  <id>12345</id><o:p></o:p>

                 <nombre_persona><o:p></o:p>

                   <apellido_materno>gonzales</apellido_materno><o:p></o:p>

    </nombre_persona><o:p></o:p>

    <sexo>m</sexo><o:p></o:p>

    …..<o:p></o:p>


    martes, 23 de mayo de 2017 3:57