public static string CSV2Class(CSVTableReader table, string namespaceName, string className) { bool hasNameSpace = !string.IsNullOrWhiteSpace(namespaceName); string space = hasNameSpace ? " " : " "; StringBuilder sb = new StringBuilder(); bool isFirstLine = true; var fieldNames = table.Headers[0]; var fieldTypes = table.Headers[1]; for (int i = 0, column = fieldNames.Column; i < column; i++) { var fieldName = fieldNames.Cells[i]; //Skip empty header column. if (string.IsNullOrEmpty(fieldName)) { continue; } if (isFirstLine) { isFirstLine = false; } else { sb.Append('\n'); } sb.Append(space); sb.Append("public "); sb.Append(fieldTypes.Cells[i]); sb.Append(" "); sb.Append(fieldName); sb.Append(";"); } if (hasNameSpace) { return(CLASS_HEAD_TEMPLATE + string.Format(CLASS_DEFINE_WITH_NAMESPACE, namespaceName, className, sb)); } return(CLASS_HEAD_TEMPLATE + string.Format(CLASS_DEFINE_WITHOUT_NAMESPACE, className, sb)); }
public static void CreateClass(CSVTableReader csvTableReader, string modelPath, string namespaceName, string modelName, string configPath, string configName, bool refresh = true) { CreateModelClass(CSVGenerator.CSV2Class(csvTableReader, namespaceName, modelName), modelPath, namespaceName, modelName, false); CreateConfigClass(namespaceName, modelName, configPath, configName, refresh); }
public static void CreateModelClass(CSVTableReader csvTableReader, string modelPath, string namespaceName, string modelName, bool refresh = true) { Write(CSVGenerator.CSV2Class(csvTableReader, namespaceName, modelName), Path.Combine(modelPath, modelName + ".cs"), refresh); }
public static void Main(string[] args) { //Write. //Create a empty csv writer. CSVTableWriter csvTableWriter = new CSVTableWriter() //Add headers. .AddHeader("Data1") .AddHeader("Data2") .AddHeader("Data3") .AddHeader("Data4") .AddHeader("Data5") .AddHeader("Data6") //Add descriptions. .AddDescription("int") .AddDescription("Color") .AddDescription("int") .AddDescription("string") .AddDescription("string") .AddDescription("int[]") //Add records. .AddRecord(new CSVRecordWriter() .AddCell("1") .AddCell("#aaaaaa") .AddCell("2") .AddCell("normal string") .AddCell("\"string with double quote") .AddCell("1;2;3|4;5;6") ) .AddRecord(new CSVRecordWriter() .AddCell("2") .AddCell("#bbbbbb") .AddCell("4") .AddCell("string with, comma") .AddCell("string\" with\", comma and \"double quote") .AddCell("7;8;9|10;11;12|7;7;7")) .AddRecord(new CSVRecordWriter() .AddCell("3") .AddCell("#ccc") .AddCell("5") .AddCell("string with \n \\n and \r\n \\r\\n") .AddCell("string\" with \n \\n and \", comma and \"double quote and \r\n \\r\\n") .AddCell("7;8;9|10;11;12|7;7;7")); //Get csv form string. string csv1 = csvTableWriter.GetEncodeTable(); Console.WriteLine("Write to csv form:\n" + csv1); using (StreamWriter streamWriter = new StreamWriter(Path.Combine(Environment.CurrentDirectory, "CSVExample1.csv"))) streamWriter.Write(csv1); //Read //Create csv reader form csv content. CSVTableReader csvTableReader = new CSVTableReader(csv1); Console.WriteLine("Read from csv form:\n" + csvTableReader); //Write //Create csv writer from csv reader, custom cell separator. CSVTableWriter csvTableWriter2 = new CSVTableWriter(csvTableReader, ';') //Remove some row and column. .RemoveHeader(5) .RemoveDescription(5) .RemoveRecord(0); foreach (var record in csvTableWriter2.Records) { record.RemoveCell(5); } //Add new record. AddRecord method will set CSVRecordWriter.CellSeparator. csvTableWriter2.AddRecord(new CSVRecordWriter() .AddCell("100") .AddCell("#cccccc") .AddCell("5") .AddCell("string with; semicolon") .AddCell("string\" with\"; semicolon and \"double quote")); //Get csv form string, choose new line style. string csv2 = csvTableWriter2.GetEncodeTable(NewLineStyle.NonUnix); Console.WriteLine("Write to csv form:\n" + csv2); using (StreamWriter streamWriter = new StreamWriter(Path.Combine(Environment.CurrentDirectory, "CSVExample2.csv"))) streamWriter.Write(csv2); Console.ReadKey(); }