示例#1
0
        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);
        }
示例#2
0
        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);
        }