private DataTable ImportFlatFile(string FileContents, ImportFormat iFmt) { string[] fileLines = FileContents.Split(iFmt.lineDelimiter.ToCharArray()); DataTable tmpDt = iFmt.CreateTempTable(); for (int line = iFmt.FirstLine; line <= fileLines.Length - 1; line++) { DataRow nr = tmpDt.NewRow(); foreach (formatColumn fc in iFmt.fmtCols) { if (fc.Enabled) { string value = fileLines[line].Substring(fc.StartPos, fc.EndPos); if (fc.Type.Equals("date", StringComparison.InvariantCultureIgnoreCase) || fc.Type.Equals("datetime", StringComparison.InvariantCultureIgnoreCase)) { nr[fc.ColumnName] = txtFieldDate(value, fc.Format); } else if (fc.Type.Equals("string", StringComparison.InvariantCultureIgnoreCase) || fc.Type.Equals("str", StringComparison.InvariantCultureIgnoreCase)) { nr[fc.ColumnName] = value; } else if (fc.Type.Equals("double", StringComparison.InvariantCultureIgnoreCase) || fc.Type.Equals("single", StringComparison.InvariantCultureIgnoreCase)) { nr[fc.ColumnName] = txtFieldDouble(value); } else if (fc.Type.Equals("int", StringComparison.InvariantCultureIgnoreCase) || fc.Type.Equals("integer", StringComparison.InvariantCultureIgnoreCase) || fc.Type.Equals("long", StringComparison.InvariantCultureIgnoreCase) || fc.Type.Equals("short", StringComparison.InvariantCultureIgnoreCase)) { nr[fc.ColumnName] = txtFieldInt(value); } else if (fc.Type.Equals("bool", StringComparison.InvariantCultureIgnoreCase) || fc.Type.Equals("boolean", StringComparison.InvariantCultureIgnoreCase) || fc.Type.Equals("bit", StringComparison.InvariantCultureIgnoreCase)) { nr[fc.ColumnName] = txtFieldBool(value, fc.Format); } else { nr[fc.ColumnName] = value; } } } tmpDt.Rows.Add(nr); } return(tmpDt); }
private DataTable ImportDelimitedFile(string FileContents, ImportFormat iFmt) { string[] fileLines = FileContents.Split(iFmt.lineDelimiter.ToCharArray()); DataTable tmpDt = iFmt.CreateTempTable(); string[] columnHeader = fileLines[0].Split(iFmt.valueDelimiter.ToCharArray()); if (iFmt.delimiterNamed) { for (int columnNumber = 0; columnNumber <= columnHeader.Length - 1; columnNumber++) { string columnName = columnHeader[columnNumber]; foreach (formatColumn r in iFmt.fmtCols) { if (columnName == r.refColumnName) { r.ColumnNumber = columnNumber; } } } } //validate foreach (formatColumn r in iFmt.fmtCols) { if (r.Enabled && (r.ColumnNumber < 0)) { //if any enabled rows dont have a colnum, then the import cant continue throw(new Exception("Not all required columns found in header... (" + r.ColumnName + ")")); } } for (int line = iFmt.FirstLine; line <= fileLines.Length - 1; line++) { string[] Values = fileLines[line].Split(iFmt.valueDelimiter.ToCharArray()); DataRow nr = tmpDt.NewRow(); foreach (formatColumn fc in iFmt.fmtCols) { if (fc.ColumnNumber < Values.Length) { string value = Values[fc.ColumnNumber]; if (iFmt.textDelimiter.Length > 0) { value = value.Replace(iFmt.textDelimiter, ""); } if (fc.Type.Equals("date", StringComparison.InvariantCultureIgnoreCase) || fc.Type.Equals("datetime", StringComparison.InvariantCultureIgnoreCase)) { nr[fc.ColumnName] = txtFieldDate(value, fc.Format); } else if (fc.Type.Equals("string", StringComparison.InvariantCultureIgnoreCase) || fc.Type.Equals("str", StringComparison.InvariantCultureIgnoreCase)) { nr[fc.ColumnName] = value; } else if (fc.Type.Equals("double", StringComparison.InvariantCultureIgnoreCase) || fc.Type.Equals("single", StringComparison.InvariantCultureIgnoreCase)) { nr[fc.ColumnName] = txtFieldDouble(value); } else if (fc.Type.Equals("int", StringComparison.InvariantCultureIgnoreCase) || fc.Type.Equals("integer", StringComparison.InvariantCultureIgnoreCase) || fc.Type.Equals("long", StringComparison.InvariantCultureIgnoreCase) || fc.Type.Equals("short", StringComparison.InvariantCultureIgnoreCase)) { nr[fc.ColumnName] = txtFieldInt(value); } else if (fc.Type.Equals("bool", StringComparison.InvariantCultureIgnoreCase) || fc.Type.Equals("boolean", StringComparison.InvariantCultureIgnoreCase) || fc.Type.Equals("bit", StringComparison.InvariantCultureIgnoreCase)) { nr[fc.ColumnName] = txtFieldBool(value, fc.Format); } else { nr[fc.ColumnName] = value; } } } if (Values.Length == columnHeader.Length) { tmpDt.Rows.Add(nr); } } return(tmpDt); }