コード例 #1
0
ファイル: CSVUtility.cs プロジェクト: mentalpop/GrabbyPaws
        /// <summary>
        /// Reads a CSV file into a table of strings.
        /// </summary>
        /// <param name="filename">Name of CSV file to read.</param>
        /// <param name="encodingType">Encoding type CSV file was created in.</param>
        /// <returns>Contents of CSV file as a 2D list of strings.</returns>
        public static List <List <string> > ReadCSVFile(string filename, EncodingType encodingType)
        {
            // Read the source file and combine multiline rows:
            var sourceLines = new List <string>();

            using (var file = new StreamReader(filename, EncodingTypeTools.GetEncoding(encodingType)))
            {
                string line;
                while ((line = file.ReadLine()) != null)
                {
                    sourceLines.Add(line.TrimEnd());
                }
            }
            CombineMultilineSourceLines(sourceLines);
            if (sourceLines.Count < 1)
            {
                return(null);
            }

            var content = new List <List <string> >();

            while (sourceLines.Count > 0)
            {
                var values = GetValues(sourceLines[0]);
                sourceLines.RemoveAt(0);
                if (values == null || values.Length == 0)
                {
                    continue;
                }
                var row = new List <string>();
                content.Add(row);
                for (int i = 0; i < values.Length; i++)
                {
                    row.Add(values[i]);
                }
            }
            return(content);
        }
コード例 #2
0
ファイル: CSVUtility.cs プロジェクト: mentalpop/GrabbyPaws
 /// <summary>
 /// Writes a table of strings to a CSV file.
 /// </summary>
 /// <param name="content">2D list of strings.</param>
 /// <param name="filename">Filename to write as.</param>
 /// <param name="encodingType">Encoding type to use.</param>
 public static void WriteCSVFile(List <List <string> > content, string filename, EncodingType encodingType)
 {
     using (var file = new StreamWriter(filename, false, EncodingTypeTools.GetEncoding(encodingType)))
     {
         for (int i = 0; i < content.Count; i++)
         {
             var           row   = content[i];
             StringBuilder sb    = new StringBuilder();
             var           first = true;
             for (int j = 0; j < row.Count; j++)
             {
                 if (!first)
                 {
                     sb.Append(",");
                 }
                 first = false;
                 var cell = row[j];
                 sb.Append(CleanField(cell));
             }
             file.WriteLine(sb);
         }
     }
 }