Pregunta

Esto puede ser un poco tonto, pero necesito enviar el contenido de una tabla de datos (columnas desconocidas, contenidos desconocidos) a través de un correo electrónico de texto.La idea básica es recorrer filas y columnas y generar todo el contenido de la celda en un StringBuilder usando .ToString().

Sin embargo, el formato es un gran problema.¿Algún consejo/idea sobre cómo hacer que esto parezca "legible" en formato de texto?

Estoy pensando en "rellenar" cada celda con espacios vacíos, pero también necesito dividir algunas celdas en varias líneas, y esto hace que el enfoque de StringBuilder sea un poco complicado (porque la segunda línea de texto de la primera columna viene después de la primera). línea de texto en la última columna, etc.)

¿Fue útil?

Solución

¿Convertir la tabla de datos en una tabla HTML y enviar un correo HTML sería una alternativa?Eso sería mucho más agradable para el receptor si su cliente lo respalda.

Otros consejos

Esto parecerá una solución realmente horrible, pero podría funcionar:

Represente el contenido de DataTable en un DataGrid/GridView (asumiendo ASP.NET) y luego elimine la pantalla.

Te dije que sería un desastre.

Obtenga primero el tamaño máximo para cada columna.De esa forma, una columna varchar(255) que contenga códigos postales no ocupará demasiado espacio.

Quizás puedas dividir la tabla completa en lugar de dividir líneas individuales.Coloque la parte derecha completa de la mesa en un segundo constructor de cuerdas y colóquela debajo de la primera mesa.

También puede darle al usuario la opción de crear texto delimitado por comas para que el receptor pueda importar la tabla a una hoja de cálculo.

Recorra la tabla de datos y envíela como correo electrónico HTML. generar una tabla html a partir de una tabla de datos y enviarla como cuerpo de correo electrónico.

Conseguí que esto funcionara escribiendo un formateador personalizado específicamente para esta tarea.El código tiene entre 120 y 130 líneas, por lo que no sé si debería publicarlo aquí como respuesta (¡tal vez una función para adjuntar archivos .cs a un tema sería una buena idea!).

De todos modos, si alguien está interesado en esto, hágamelo saber y le daré el código.

¿Es necesario formatearlo correctamente o un sistema automatizado recogerá el mensaje de correo en el otro extremo?Si es lo último, simplemente use el método .WriteXml() de la tabla de datos.

Puedes hacer algo como esto (si es VB):

Dim Str As String = ""
    'Create File if doesn't exist
        Dim FILE_NAME As String = "C:\temp\Custom.txt"
        If System.IO.File.Exists(FILE_NAME) = False Then
            System.IO.File.Create(FILE_NAME)
        End If

        Dim objWriter As System.IO.StreamWriter
        Try
            objWriter = New System.IO.StreamWriter(FILE_NAME)
        Catch ex As System.IO.IOException
            MsgBox("Please close the file: (C:\temp\Custom.txt) before proceeding" & vbCrLf & ex.Message.ToString, MsgBoxStyle.Exclamation)
            objWriter = Nothing
            Err = True
        End Try


'I assume you know how to write to text file.
'Say my datagridview is named "dgrid"

Dim x,y as integer

For x = 0 to dgrid.rows.count -1
    For y = 0 to dgrid.columns.count - 1
       Str = dgrid.Rows(x).Cells(y).Values & " "
   Next y
Next x

objWriter.Close()

Recurso.

O incluso puedes generar un CSV archivo de su DataTable.

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