public static void Main()
Console.WriteLine("\nPasso 01 (table original):");
DataTable data = GetTable();
Console.WriteLine(fnDataTablesToCsv(data));
Console.WriteLine("\nPasso 02 (table with new autonumeric column):");
fnDataTableAddColumnSequenceNumber(data,"SEQ" ,1, 1);
fnDataTableAddColumnSequenceNumber(data,"N");
fnDataTableAddColumnSequenceNumber(data,"P10" ,10, 10);
Console.WriteLine(fnDataTablesToCsv(data));
Console.WriteLine("\nPasso 03 Teste Nao gera numeracao automatica quando adiciona novos itens:");
DataTable dataN = data.Copy();
foreach (DataRow dr in dataN.Rows) {
data.Rows.Add(dr.ItemArray);
Console.WriteLine(fnDataTablesToCsv(data));
Console.WriteLine("\nPasso 03 TesteN Tabela de copia:");
Console.WriteLine(fnDataTablesToCsv(dataN));
public static string fnDataTableAddColumnSequenceNumber(DataTable dt, String ColumnName, int Inicio = 1, int Step = 1)
DataColumn column = new DataColumn();
column.ColumnName = ColumnName;
column.DataType = System.Type.GetType("System.Int32");
foreach (DataRow row in dt.Rows)
public static string fnDataTablesToCsv( DataTable dataTable) {
StringBuilder sbData = new StringBuilder();
if (dataTable.Columns.Count == 0){ return null; }
foreach (var col in dataTable.Columns) {
sbData.Append("\"" + col.ToString().Replace("\"", "\"\"") + "\",");
sbData.Replace(",", System.Environment.NewLine, sbData.Length - 1, 1);
foreach (DataRow dr in dataTable.Rows) {
foreach (var column in dr.ItemArray) {
sbData.Append("\"" + column.ToString().Replace("\"", "\"\"") + "\",");
sbData.Replace(",", System.Environment.NewLine, sbData.Length - 1, 1);
return sbData.ToString();
public static string fnDataTablesToCsvSimple(DataTable dt){
StringBuilder sb = new StringBuilder();
foreach (DataColumn col in dt.Columns)
sb.Append(col.ColumnName + ',');
sb.Remove(sb.Length - 1, 1);
sb.Append(Environment.NewLine);
foreach (DataRow row in dt.Rows)
for (int i = 0; i < dt.Columns.Count; i++)
sb.Append(row[i].ToString() + ",");
sb.Append(Environment.NewLine);
public static string fnDataTableAddColumnAutoNumber(DataTable dt, String ColumnName,int Inicio = 1){
DataColumn column = new DataColumn();
column.ColumnName = ColumnName;
column.DataType = System.Type.GetType("System.Int32");
column.AutoIncrement = true;
column.AutoIncrementSeed = 0;
column.AutoIncrementStep = 1;
foreach (DataRow row in dt.Rows)
static DataTable GetTable()
DataTable table = new DataTable();
table.Columns.Add("Dosage", typeof(int));
table.Columns.Add("Drug", typeof(string));
table.Columns.Add("Patient", typeof(string));
table.Columns.Add("Date", typeof(DateTime));
table.Rows.Add(25, "Indocin", "David", DateTime.Now);
table.Rows.Add(50, "Enebrel", "Sam", DateTime.Now);
table.Rows.Add(10, "Hydralazine", "Christoff", DateTime.Now);
table.Rows.Add(21, "Combivent", "Janet", DateTime.Now);
table.Rows.Add(100, "Dilantin", "Melanie", DateTime.Now);
table.Rows.Add(51, "Fernando,Luiz", "Melanie,,,,,,", DateTime.Now);