public CsvData(List<string> headerList, List<string> valueList)
 {
     Header = new CsvRecord();
     Record = new CsvRecord();
     Header.Fields = headerList;
     Record.Fields = valueList;
 }
        private string EncodeRecord(CsvRecord record)
        {
            StringBuilder text = new StringBuilder();
            for (int i = 0; i < record.Fields.Count; i++)
            {
                string field = record.Fields[i];

                FieldFormatOption option = FieldFormatOption.Default;
                if (FormatOptions != null && FormatOptions.ContainsKey(i))
                {
                    option = FormatOptions[i];
                }
                int charsToPad = 0;
                if (field != null)
                {
                    string value = option.AlwaysQuoted ? "\"" +
                           EscapeString(field) + "\"" : EncodeField(field);

                    charsToPad = option.TotalWidth - GetTextWidth(value);
                    if (option.AlignRight && charsToPad > 0)
                    {
                        text.Append(new string(' ', charsToPad));
                    }
                    text.Append(value);
                }
                if (i < record.Fields.Count - 1)
                {
                    text.Append(Separator);
                }

                if (!option.AlignRight && charsToPad > 0)
                {
                    text.Append(new string(' ', charsToPad));
                }
            }
            return text.ToString();
        }