关于c#:DataTable可读文本字符串

关于c#:DataTable可读文本字符串

DataTable to readable text string

这可能有点愚蠢,但是我需要通过文本电子邮件发送DataTable的内容(未知列,未知内容)。 基本思想是遍历行和列,并使用.ToString()将所有单元格内容输出到StringBuilder中。

格式化是一个大问题。 关于如何使其以文本格式"可读"的任何提示/想法?

我正在考虑用空格填充每个单元格,但是我还需要将一些单元格分成多行,这会使StringBuilder的方法有点混乱(因为第一列的第二行文本在第一行之后 最后一列中的一行文本,依此类推)


首先获取每列的最大大小。这样,包含邮政编码的varchar(255)列就不会占用太多空间。

也许您可以拆分整个表格,而不是拆分单行。将表的完整右侧部分放入第二个stringbuilder中,并将其放在第一个表格之下。

您还可以为用户提供创建逗号分隔文本的选项,以便接收者可以将表格导入电子表格中。


这听起来像是一个非常可怕的解决方案,但它可能会起作用:

将DataTable内容呈现到DataGrid / GridView(假定ASP.NET)中,然后屏幕将其刮取。

我告诉过你那会很乱。


将数据表转换为HTML表并发送HTML邮件是否可以替代?如果他们的客户支持的话,那将使接收端变得更好。


是否需要很好地格式化,还是自动系统会在另一端接收邮件?如果是后者,则只需使用数据表的.WriteXml()方法。


我通过专门为此任务编写一个自定义格式化程序来完成此工作。该代码长约120 -130行,所以我不知道是否应该在此处发布它作为答案(也许将.cs文件附加到主题的功能很不错!)。

无论如何,如果有人对此感兴趣,请告诉我,我将提供代码。


循环遍历数据表并将其作为HTML电子邮件发送-从数据表生成html表并将其作为电子邮件正文发送。


您可以这样做(如果是VB):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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文件。


推荐阅读