Vra

Dit mag dalk 'n bietjie op die dom kant van die saak te wees, maar ek nodig het om die inhoud van 'n DataTable (onbekende kolomme, onbekende inhoud) via 'n SMS-e-pos te stuur. Basiese idee is om lus oor rye en kolomme en uitset al selinhoud in 'n StringBuilder behulp .ToString ().

opmaak is 'n groot probleem al is. Enige wenke / idees oor hoe om dit te kyk "leesbare" in 'n teks formaat te maak?

Ek dink op "padding" elke sel met leë ruimtes, maar ek moet ook 'n paar selle verdeel in verskeie reëls, en dit maak die StringBuilder benader 'n bietjie slordig (omdat die tweede reël van die teks uit die eerste kolom kom nadat die eerste reël van die teks in die laaste kolom, ens.)

Was dit nuttig?

Oplossing

Sou die omskakeling van die datatable om 'n HTML-tabel en stuur HTML-pos wees 'n alternatief? Dit sou dit baie lekkerder aan die ontvangkant te maak as hul kliënt ondersteun dit.

Ander wenke

Dit sal klink soos 'n baie afskuwelike oplossing, maar dit dalk net werk:

Betaal die DataTable inhoud in 'n Data Grid / GridView (met die aanvaarding ASP.NET) en dan skerm skraap nie.

Ek het jou gesê dit sou morsig wees.

Kry die maksimum grootte vir elke kolom eerste. Op dié manier 'n varchar (255) kolom bevat poskodes sal nie neem te veel ruimte.

Miskien kan jy die volledige tabel in plaas van verdeel enkele lyne verdeel. Sit die volledige reg deel van die tafel in 'n tweede StringBuilder en sit dit onder die eerste tafel.

Jy kan ook die gebruiker gee die opsie om komma geskei teks te skep sodat die ontvanger die tafel in 'n spreadsheet kan invoer.

Loop deur die datatable en stuur dit as HTML e-pos - genereer html tafel van datatable & stuur dit as liggaam van e-pos .

Ek het hierdie werk deur die skryf van 'n persoonlike formatter spesifiek vir hierdie taak. Die kode is ongeveer 120 -130 lyne lank, so ek weet nie of ek dit hier moet plaas as 'n antwoord (miskien 'n funksie om lêers te heg cs om 'n onderwerp sal 'n goeie ideea wees!).

In elk geval, as iemand belangstel in hierdie, laat my weet en ek sal die kode verskaf.

Is dit nodig om mooi geformateer, of sal 'n outomatiese stelsel haal die pos boodskap aan die ander kant? As laasgenoemde, net gebruik .WriteXml () metode die datatable se.

Jy kan iets te doen het soos hierdie (as 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()

Resource .

Of jy kan selfs 'n CSV lêer van jou DataTable genereer.

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top