2

これはちょっとばかげているかもしれませんが、DataTable の内容 (不明な列、不明な内容) をテキスト電子メールで送信する必要があります。基本的な考え方は、行と列をループし、.ToString() を使用してすべてのセルの内容を StringBuilder に出力することです。

ただし、フォーマットは大きな問題です。これをテキスト形式で「読みやすい」ようにする方法に関するヒント/アイデアはありますか?

各セルに空のスペースを「埋め込む」ことを考えていますが、いくつかのセルを複数の行に分割する必要もあります。最後の列のテキスト行など)

4

7 に答える 7

1

データテーブルを HTML テーブルに変換し、HTML メールを送信することは別の方法でしょうか? クライアントがサポートしている場合、受信側でより良いものになります。

于 2008-09-10T08:58:10.637 に答える
1

これは本当に恐ろしい解決策のように聞こえますが、うまくいくかもしれません:

DataTable の内容を DataGrid/GridView (ASP.NET を想定) にレンダリングし、それをスクリーン スクレイピングします。

ぐちゃぐちゃになると言っていました。

于 2008-09-10T08:59:32.053 に答える
1

最初に各列の最大サイズを取得します。そうすれば、郵便番号を含む varchar(255) 列があまりスペースを占有しなくなります。

単一の行を分割する代わりに、テーブル全体を分割できる場合があります。テーブルの右部分全体を 2 番目の stringbuilder に配置し、最初のテーブルの下に配置します。

受信者がテーブルをスプレッドシートにインポートできるように、カンマ区切りのテキストを作成するオプションをユーザーに与えることもできます。

于 2008-09-10T09:03:26.957 に答える
0

適切にフォーマットする必要がありますか、それとも自動システムが相手側のメールメッセージを受信しますか?後者の場合は、datatableの.WriteXml()メソッドを使用してください。

于 2008-09-10T13:57:44.783 に答える
0

データテーブルをループし、HTML 電子メールとして送信します。データテーブルから HTML テーブルを生成し、電子メールの本文として送信します

于 2008-09-10T09:02:09.427 に答える
0

このタスク専用のカスタムフォーマッターを作成することで、これを機能させました。コードの長さは約 120 ~ 130 行なので、回答としてここに投稿する必要があるかどうかはわかりません (トピックに .cs ファイルを添付する機能がよいアイデアかもしれません!)。

とにかく、誰かがこれに興味を持っている場合は、私に知らせてください。コードを提供します.

于 2008-09-10T09:59:30.007 に答える
-2

次のようにsmthを実行できます(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()

リソース

または、DataTable からCSVファイルを生成することもできます。

于 2008-09-10T09:04:09.967 に答える