DataTable in lesbaren text string
-
09-06-2019 - |
Frage
Dies ist möglicherweise ein wenig auf die dumme Seite der Dinge, aber ich Notwendigkeit zu senden, die den Inhalt einer DataTable (unbekannt Spalten, unbekannte Inhalte) werden über eine text-e-mail.Die grundlegende Idee besteht darin, eine Schleife über Zeilen und Spalten ein-und Ausgabe alle Inhalte der Zellen in einen StringBuilder verwenden .ToString().
Die Formatierung ist ein großes Problem, obwohl.Irgendwelche Tipps/Ideen, wie man diesen look "lesbar" in einem text-format ?
Ich bin am überlegen "padding" jede Zelle mit Leerzeichen, aber ich brauche auch aufteilen, einige Zellen in mehreren Zeilen, und das macht die StringBuilder-Ansatz ein bisschen unordentlich ( weil die zweite Zeile des Textes aus der ersten Spalte nach der ersten Zeile des Textes in der letzten Spalte,etc.)
Lösung
Möchten Umwandlung der Datentabelle in eine HTML-Tabelle und Senden von HTML-Mail eine Alternative? Das wäre es viel schöner am empfangenden Ende machen, wenn ihre Kunden unterstützt.
Andere Tipps
Dies wird wie eine wirklich schreckliche Lösung klingen, aber es könnte funktionieren:
Render die Datatable Inhalt in einem Datagrid / Gridview (vorausgesetzt, ASP.NET) und Bildschirm dann, dass kratzen.
Ich habe dir gesagt, es sei chaotisch.
Erhalten Sie für jede Spalte die maximale Größe zuerst. Auf diese Weise ein varchar (255) Spalte Postleitzahlen enthalten, werden nicht zu viel Platz in Anspruch nehmen.
Vielleicht können Sie die komplette Tabelle aufgeteilt statt Splitting einzelne Linien. Legen Sie den kompletten rechten Teil der Tabelle in einem zweiten Stringbuilder und legt sie unter der ersten Tabelle.
Sie können auch dem Benutzer die Möglichkeit geben, durch Komma getrennten Text zu erstellen, so dass der Empfänger die Tabelle in eine Tabelle importieren kann.
Schleife durch die Datentabelle und als HTML-E-Mail - HTML-Tabelle aus Datentabelle zu erzeugen und sie zu senden als Körper der E-Mail .
Ich habe diese Arbeit durch einen benutzerdefinierten Formatierer speziell für diese Aufgabe zu schreiben. Der Code ist etwa 120 -130 Zeilen lang, so dass ich weiß nicht, ob ich es hier als Antwort schreiben soll (vielleicht ein Feature zu befestigen CS-Dateien zu einem Thema eine gute ideea wäre!).
Wie auch immer, wenn jemand interessiert daran ist, lassen Sie mich wissen und ich werde den Code zur Verfügung stellen.
Braucht es schön formatiert werden, oder wird ein automatisiertes System die Mail-Nachricht am anderen Ende abholen? Wenn letzteres der Fall, verwenden Sie einfach die .WriteXml des Datatable () -Methode.
Sie können smth wie folgt tun (wenn 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()
Sie können aber auch eine CSV Datei von Ihrer Datentabelle erzeugen.