Вопрос

Это может быть немного глупо, но мне нужно отправить содержимое DataTable (неизвестные столбцы, неизвестное содержимое) по текстовому электронному письму.Основная идея состоит в том, чтобы перебирать строки и столбцы и выводить все содержимое ячеек в StringBuilder с помощью .ToString().

Однако форматирование является большой проблемой.Любые советы/идеи о том, как сделать это «читабельным» в текстовом формате?

Я подумываю о «дополнении» каждой ячейки пустыми местами, но мне также нужно разделить некоторые ячейки на несколько строк, и это делает подход StringBuilder немного беспорядочным (поскольку вторая строка текста из первого столбца идет после первой строка текста в последнем столбце и т. д.)

Это было полезно?

Решение

Будет ли альтернативой преобразование таблицы данных в HTML-таблицу и отправка HTML-почты?Получающей стороне будет намного приятнее, если их клиент поддержит это.

Другие советы

Это может показаться ужасным решением, но оно может сработать:

Отобразите содержимое DataTable в DataGrid/GridView (при условии ASP.NET), а затем очистите его.

Я говорил тебе, что это будет грязно.

Сначала получите максимальный размер для каждого столбца.Таким образом, столбец varchar(255), содержащий почтовые индексы, не будет занимать слишком много места.

Возможно, вы сможете разделить всю таблицу вместо того, чтобы разбивать отдельные строки.Поместите всю правую часть таблицы во второй конструктор строк и поместите ее под первую таблицу.

Вы также можете предоставить пользователю возможность создавать текст, разделенный запятыми, чтобы получатель мог импортировать таблицу в электронную таблицу.

Прокрутите таблицу данных и отправьте ее в виде электронного письма в формате HTML – создание html-таблицы из таблицы данных и отправка ее как тело электронного письма.

Я добился этого, написав специальный форматтер специально для этой задачи.Длина кода составляет около 120–130 строк, поэтому я не знаю, стоит ли публиковать его здесь в качестве ответа (возможно, хорошей идеей была бы возможность прикреплять файлы .cs к теме!).

В любом случае, если кого-то это заинтересует, дайте мне знать, и я предоставлю код.

Нужно ли его правильно отформатировать, или автоматизированная система подхватит почтовое сообщение на другом конце?В последнем случае просто используйте метод .WriteXml() таблицы данных.

Вы можете сделать что-то вроде этого (если 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()

Ресурс.

Или вы даже можете создать CSV-файл файл из вашего DataTable.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top