반응형
DataTable을 텔레그램 텍스트 메시지로 전송할 수 있게 문자열로 변환하는 메소드 입니다.
#region DataTable을 String으로 변환
public static string DataTable2String(DataTable dataTable)
{
StringBuilder sb = new StringBuilder();
if (dataTable != null)
{
string seperator = " | ";
#region get min length for columns
System.Collections.Hashtable hash = new System.Collections.Hashtable();
foreach (DataColumn col in dataTable.Columns)
hash[col.ColumnName] = col.ColumnName.Length;
foreach (DataRow row in dataTable.Rows)
{
if (row[0] != DBNull.Value)
{
for (int i = 0; i < row.ItemArray.Length; i++)
if (row[i] != DBNull.Value)
if (((string)row[i]).Length > (int)hash[dataTable.Columns[i].ColumnName])
hash[dataTable.Columns[i].ColumnName] = ((string)row[i]).Length;
}
}
int rowLength = (hash.Values.Count + 1) * seperator.Length;
foreach (object o in hash.Values)
rowLength += (int)o;
#endregion get min length for columns
sb.Append(new string('=', 10));
if (!string.IsNullOrEmpty(dataTable.TableName))
sb.Append(String.Format(" {0} ", dataTable.TableName));
else
sb.Append(" DataTable ");
sb.AppendLine(new string('=', 10));
#region write values
foreach (DataColumn col in dataTable.Columns)
sb.Append(seperator + String.Format("{0,-" + hash[col.ColumnName] + "}", col.ColumnName));
sb.AppendLine(seperator);
sb.AppendLine(new string('-', 22 + dataTable.TableName.Length));
foreach (DataRow row in dataTable.Rows)
{
if (row[0] != DBNull.Value)
{
for (int i = 0; i < row.ItemArray.Length; i++)
{
object cellVal = row[i].ToString();
if (cellVal.ToString() == "")
{
for (int j = 0; j < int.Parse(hash[dataTable.Columns[i].ColumnName].ToString()); j++)
{
cellVal += "~ ";
}
}
sb.Append(seperator + String.Format("{0," + hash[dataTable.Columns[i].ColumnName] + "}", cellVal));
if (i == row.ItemArray.Length - 1)
sb.AppendLine(seperator);
}
}
}
#endregion write values
sb.AppendLine(new string('=', 22 + dataTable.TableName.Length));
}
else
sb.AppendLine("===== DataTable is NULL =====");
return sb.ToString();
}
#endregion
반응형
'창고' 카테고리의 다른 글
7월의 관심종목들 - 펀더멘탈좋고 장기적 우상향 추세인 세트렉아이, 샘표식품, 한국알콜, DB하이텍, 이노와이어리스 (0) | 2020.06.27 |
---|---|
C# 현재화면 캡쳐해서 그림파일 png 생성하는 방법 (0) | 2020.06.27 |
C# 가장 쉽게 데이터테이블을 xml로 저장하고 불러오는 방법 (0) | 2020.06.27 |
C# 데이터그리드뷰를 데이터테이블(DataTable)로 변환하는 방법 (1) | 2020.06.27 |
초보 주식투자자도 절대로 망하지 않을 수 있는 52주 고가대비 하락률 비중 매매법 (구조대가 오지 않아도 괜찮다...) (0) | 2020.06.27 |