Domanda

Potrebbe sembrare un po' sciocco, ma devo inviare il contenuto di un DataTable (colonne sconosciute, contenuti sconosciuti) tramite un'e-mail di testo.L'idea di base è eseguire il loop su righe e colonne e visualizzare tutto il contenuto della cella in uno StringBuilder utilizzando .ToString().

La formattazione è però un grosso problema.Qualche suggerimento/idea su come rendere questo aspetto "leggibile" in un formato di testo?

Sto pensando di "riempire" ogni cella con spazi vuoti, ma ho anche bisogno di dividere alcune celle in più righe, e questo rende l'approccio di StringBuilder un po' confuso (perché la seconda riga di testo della prima colonna viene dopo la prima riga di testo nell'ultima colonna, ecc.)

È stato utile?

Soluzione

Convertire il datatable in una tabella HTML e inviare posta elettronica HTML sarebbe un'alternativa?Ciò renderebbe molto più piacevole il ricevente se il loro cliente lo supportasse.

Altri suggerimenti

Sembrerà una soluzione davvero orribile, ma potrebbe funzionare:

Eseguire il rendering del contenuto di DataTable in un DataGrid/GridView (supponendo ASP.NET) e quindi raschiarlo sullo schermo.

Te l'avevo detto che sarebbe stato complicato.

Ottieni prima la dimensione massima per ogni colonna.In questo modo una colonna varchar(255) contenente i codici postali non occuperà troppo spazio.

Forse puoi dividere la tabella completa invece di dividere singole righe.Metti l'intera parte destra della tabella in un secondo stringbuilder e mettila sotto la prima tabella.

Puoi anche dare all'utente la possibilità di creare testo delimitato da virgole in modo che il destinatario possa importare la tabella in un foglio di calcolo.

Passa in rassegna il datatable e invialo come email HTML: generare una tabella html da datatable e inviarla come corpo dell'e-mail.

Ho ottenuto che funzionasse scrivendo un formattatore personalizzato appositamente per questa attività.Il codice è lungo circa 120 -130 righe, quindi non so se dovrei pubblicarlo qui come risposta (forse una funzionalità per allegare file .cs a un argomento sarebbe una buona idea!).

Comunque se a qualcuno interessa me lo faccia sapere e gli fornirò il codice.

È necessario formattarlo correttamente oppure un sistema automatizzato raccoglierà il messaggio di posta dall'altra parte?In quest'ultimo caso, utilizza semplicemente il metodo .WriteXml() del datatable.

Puoi fare qualcosa in questo modo (se 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()

Risorsa.

Oppure puoi anche generare un file CSV file dal tuo DataTable.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top