DataTable для читаемой текстовой строки - PullRequest
2 голосов
/ 10 сентября 2008

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

Хотя форматирование - большая проблема. Какие-нибудь советы / идеи о том, как сделать это «читабельным» в текстовом формате?

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

Ответы [ 7 ]

1 голос
/ 10 сентября 2008

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

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

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

1 голос
/ 10 сентября 2008

Это будет звучать как действительно ужасное решение, но оно может сработать:

Визуализация содержимого DataTable в DataGrid / GridView (при условии ASP.NET), а затем очистка экрана.

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

1 голос
/ 10 сентября 2008

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

0 голосов
/ 10 сентября 2008

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

0 голосов
/ 10 сентября 2008

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

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

0 голосов
/ 10 сентября 2008

Вы можете сделать что-то вроде этого (если 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 из таблицы данных.

0 голосов
/ 10 сентября 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...