none
Exportar DataTable a Excel sin que los saltos de linea en las columnas hagan un salto de fila RRS feed

  • Pregunta

  • Hola Buen día comunidad.

    Tengo el siguiente código para exportar un DataTable a Excel.

    StreamWriter wr = new StreamWriter(ruta, false);

                    for (int i = 0; i < oDataTable.Columns.Count; i++)
                    {
                        wr.Write(oDataTable.Columns[i].ToString().ToUpper() + "\t");
                    }

                    wr.WriteLine();

                    //write rows to excel file
                    for (int i = 0; i < (oDataTable.Rows.Count); i++)
                    {
                        for (int j = 0; j < oDataTable.Columns.Count; j++)
                        {
                            if (oDataTable.Rows[i][j] != null)
                            {
                                wr.Write(Convert.ToString(oDataTable.Rows[i][j]) + "\t");
                            }
                            else
                            {
                                wr.Write("\t");
                            }
                        }
                        //go to next line
                        wr.WriteLine();
                    }
                    //close file
                    wr.Close();

    Y tengo una columna que se llama observaciones, donde la información que se encuentra la han realizado con saltos de línea o en rara ocasión un ; esto provoca que al exportar el excel si la columna contiene esto no hará el salto de línea bajo la misma columna y escribirá sobre esta.... si no que empezara a escribir en un nueva fila........Esto daña los reportes que requiero generar. Me podrían dar alguna solución para que no me suceda esto si no que si encuentra algún salto de linea en el campo que va a grabar lo haga bajo este y no salte a la nueva fila.

    viernes, 5 de enero de 2018 22:37

Respuestas

  • te pasteo la solución y en negrita el cambio

      //write rows to excel file
                    for (int i = 0; i < (oDataTable.Rows.Count); i++)
                    {
                        for (int j = 0; j < oDataTable.Columns.Count; j++)
                        {
                            if (oDataTable.Rows[i][j] != null)
                            {
    string cellText= Replace(Convert.ToString(oDataTable.Rows[i][j]),"\r\n","\n") + "\t"
                                wr.Write(cellText);
                            }
                            else
                            {
                                wr.Write("\t");
                            }
                        }
                        //go to next line
                        wr.WriteLine();
                    }
                    //close file
                    wr.Close()
    Entiendo que el caracter \r te provoca el cambio de fila, pero el caracter \n solo el salto de linea.

    • Propuesto como respuesta vyrcyrus_ sábado, 6 de enero de 2018 20:11
    • Marcado como respuesta Pablo RubioModerator lunes, 8 de enero de 2018 22:32
    sábado, 6 de enero de 2018 20:11

Todas las respuestas

  • te pasteo la solución y en negrita el cambio

      //write rows to excel file
                    for (int i = 0; i < (oDataTable.Rows.Count); i++)
                    {
                        for (int j = 0; j < oDataTable.Columns.Count; j++)
                        {
                            if (oDataTable.Rows[i][j] != null)
                            {
    string cellText= Replace(Convert.ToString(oDataTable.Rows[i][j]),"\r\n","\n") + "\t"
                                wr.Write(cellText);
                            }
                            else
                            {
                                wr.Write("\t");
                            }
                        }
                        //go to next line
                        wr.WriteLine();
                    }
                    //close file
                    wr.Close()
    Entiendo que el caracter \r te provoca el cambio de fila, pero el caracter \n solo el salto de linea.

    • Propuesto como respuesta vyrcyrus_ sábado, 6 de enero de 2018 20:11
    • Marcado como respuesta Pablo RubioModerator lunes, 8 de enero de 2018 22:32
    sábado, 6 de enero de 2018 20:11
  • te pasteo la solución y en negrita el cambio

      //write rows to excel file
                    for (int i = 0; i < (oDataTable.Rows.Count); i++)
                    {
                        for (int j = 0; j < oDataTable.Columns.Count; j++)
                        {
                            if (oDataTable.Rows[i][j] != null)
                            {
    string cellText= Replace(Convert.ToString(oDataTable.Rows[i][j]),"\r\n","\n") + "\t"
                                wr.Write(cellText);
                            }
                            else
                            {
                                wr.Write("\t");
                            }
                        }
                        //go to next line
                        wr.WriteLine();
                    }
                    //close file
                    wr.Close()
    Entiendo que el caracter \r te provoca el cambio de fila, pero el caracter \n solo el salto de linea.

    Vale amigo muchas gracias por tu respuesta, lo intentare a ver si logro dar solucion a mi inconveniente y todo.

    lunes, 8 de enero de 2018 23:40