⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hongwaishuju.cs

📁 解析文本文件并导入到数据库,多种文件格式
💻 CS
📖 第 1 页 / 共 2 页
字号:
                }
                else if (NewFileInfo[k].ToString().IndexOf("fz") >= 0)  //列式规范标题标准格式文本数据。
                {

                    StreamReader sr = new StreamReader(fs, Encoding.Default);
                    DataTable dt = new DataTable();
                    dt.TableName = NewFileInfo[k].ToString().Replace(".", "_");

                    string[] arrStrLine = sr.ReadToEnd().Trim().Split('\r'); //读取整个文件内容,并按照每行一个数组存储。
                    int nColumnCount = System.Convert.ToInt16(arrStrLine[0]);                               //将第一行的列数存入数组  
                    
                    dt.Columns.Add("所属型号");
                    dt.Columns.Add("试验项目编号");
                    dt.Columns.Add("数据类别");

                    for (int i = 1; i <= nColumnCount; i++)               //根据读取的列名添加到数据表中
                    {
                        string cName = arrStrLine[i].Trim();
                        if (cName != "")
                        {
                            if (!dt.Columns.Contains(cName))
                            {
                                dt.Columns.Add(cName);                      //给DataTable建立标题
                            }
                            else
                            {
                                dt.Columns.Add(cName + "_1");
                            }
                        }                   
                    }


                    for (int i = nColumnCount+1; i <= arrStrLine.GetUpperBound(0); i++)
                    {
                        string strCurrLine = arrStrLine[i].Trim();
                        strCurrLine = strCurrLine.Replace("\t", " ");
                        while (strCurrLine.IndexOf("  ") > -1) //把数据中的空格都去掉
                        {
                            strCurrLine = strCurrLine.Replace("  ", " ");
                        }
                        strCurrLine = "   " + strCurrLine; //补充3个空格
                        string[] ArrStrShuJu = strCurrLine.Split(' ');

                        while  (ArrStrShuJu.GetUpperBound(0)+1 < nColumnCount + 3)
                        {
                            i = i + 1;
                            string strCurrLine1 = arrStrLine[i].Trim();
                            strCurrLine1 = strCurrLine1.Replace("\t", " ");
                            while (strCurrLine1.IndexOf("  ") > -1) //把数据中的空格都去掉
                            {
                                strCurrLine1 = strCurrLine1.Replace("  ", " ");
                            }
                            strCurrLine = strCurrLine +" "+ strCurrLine1; //将两行数据组合起来
                             ArrStrShuJu = strCurrLine.Split(' ');
                             
                        }


                        //假如文件夹名称不是“20开头”,补上“20”

                        if (strFilePath.IndexOf("\\20") > 0)
                        {
                            ArrStrShuJu[1] = "PL12_20" + strFilePath;
                        }
                        else
                        {
                            ArrStrShuJu[1] = "PL12_" + strFilePath;
                        }
                        ArrStrShuJu[0] = "PL12";
                        ArrStrShuJu[2] = "仿真机数据";
                        dt.Rows.Add(ArrStrShuJu);

                    }

                    ds.Tables.Add(dt);
                    sr.Close();
                }
                else if (NewFileInfo[k].ToString().IndexOf("DI") >= 0)  //复杂标题标准格式文本数据。
                {

                    StreamReader sr = new StreamReader(fs, Encoding.Default);
                    DataTable dt = new DataTable();
                    int nFirstLine = 0;
                    dt.TableName = NewFileInfo[k].ToString().Replace(".", "_");

                    string[] arrStrLine = sr.ReadToEnd().Trim().Split('\r'); //读取整个文件内容,并按照每行一个数组存储。

                    for (int i = 0; i <= arrStrLine.GetUpperBound(0); i++)
                    {
                        if (arrStrLine[i].IndexOf("时间") > -1)
                        {
                            nFirstLine=i+1;
                        }
                    }
                    string strColumnName = arrStrLine[nFirstLine - 1].Trim();
                    strColumnName = strColumnName.Replace("\t", " ");
                    while (strColumnName.IndexOf("  ") > -1)
                    {
                        strColumnName = strColumnName.Replace("  ", " ");
                    }
                    string[] arrColName = strColumnName.Split(' ');                  //将第一行的列名存入数组

                    dt.Columns.Add("所属型号");
                    dt.Columns.Add("试验项目编号");
                    dt.Columns.Add("数据类别");

                    int nColumnsCount = arrColName.GetUpperBound(0);   //第一行数据的列数。
                    for (int c = 0; c <= nColumnsCount; c++)
                    {
                        string cName = arrColName[c].Trim();
                        if (cName != "")
                        {
                            if (!dt.Columns.Contains(cName))
                            {
                                dt.Columns.Add(cName);                      //给DataTable建立标题
                            }
                            else
                            {
                                dt.Columns.Add(cName + "_1");
                            }
                        }                        
                    }

                    //  string[] ArrStrShuJu = new string[nColumnsCount+3];

                    for (int i = nFirstLine; i <= arrStrLine.GetUpperBound(0); i++)
                    {
                        string strCurrLine = arrStrLine[i].Trim();
                        strCurrLine = strCurrLine.Replace("\t", " ");
                        while (strCurrLine.IndexOf("  ") > -1)
                        {
                            strCurrLine = strCurrLine.Replace("  ", " ");
                        }
                        strCurrLine = "   " + strCurrLine;  //把数据中的空格都去掉
                        string[] ArrStrShuJu = strCurrLine.Split(' ');



                        //假如文件夹名称不是“20开头”,补上“20”

                        if (strFilePath.IndexOf("\\20") > 0)
                        {
                            ArrStrShuJu[1] = "PL12_20" + strFilePath;
                        }
                        else
                        {
                            ArrStrShuJu[1] = "PL12_" + strFilePath;
                        }
                        ArrStrShuJu[0] = "PL12";
                        ArrStrShuJu[2] = "仿真机数据";
                        dt.Rows.Add(ArrStrShuJu);

                    }

                    ds.Tables.Add(dt);
                    sr.Close();
                }
                else if (NewFileInfo[k].ToString().IndexOf("中速") >= 0)  //复杂标题标准格式文本数据。
                {

                    StreamReader sr = new StreamReader(fs, Encoding.Default);
                    DataTable dt = new DataTable();
                    int nFirstLine = 0;
                    dt.TableName = NewFileInfo[k].ToString().Replace(".", "_");

                    string[] arrStrLine = sr.ReadToEnd().Trim().Split('\r'); //读取整个文件内容,并按照每行一个数组存储。

                    for (int i = 0; i <= arrStrLine.GetUpperBound(0); i++)
                    {
                        if (arrStrLine[i].IndexOf("时间") > -1)
                        {
                            nFirstLine = i + 1;
                        }
                    }
                    string strColumnName = arrStrLine[nFirstLine - 1].Trim();
                    strColumnName = strColumnName.Replace("\t", " ");
                    while (strColumnName.IndexOf("  ") > -1)
                    {
                        strColumnName = strColumnName.Replace("  ", " ");
                    }
                    string[] arrColName = strColumnName.Split(' ');                  //将第一行的列名存入数组

                    dt.Columns.Add("所属型号");
                    dt.Columns.Add("试验项目编号");
                    dt.Columns.Add("数据类别");

                    int nColumnsCount = arrColName.GetUpperBound(0);   //第一行数据的列数。
                    for (int c = 0; c <= nColumnsCount; c++)
                    {
                        string cName = arrColName[c].Trim();
                        if (cName != "")
                        {
                            if (!dt.Columns.Contains(cName))
                            {
                                dt.Columns.Add(cName);                      //给DataTable建立标题
                            }
                            else
                            {
                                dt.Columns.Add(cName + "_1");
                            }
                        }
                    }

                    //  string[] ArrStrShuJu = new string[nColumnsCount+3];

                    for (int i = nFirstLine; i <= arrStrLine.GetUpperBound(0); i++)
                    {
                        string strCurrLine = arrStrLine[i].Trim();
                        strCurrLine = strCurrLine.Replace("\t", " ");
                        while (strCurrLine.IndexOf("  ") > -1)
                        {
                            strCurrLine = strCurrLine.Replace("  ", " ");
                        }
                        strCurrLine = "   " + strCurrLine;  //把数据中的空格都去掉
                        string[] ArrStrShuJu = strCurrLine.Split(' ');



                        //假如文件夹名称不是“20开头”,补上“20”

                        if (strFilePath.IndexOf("\\20") > 0)
                        {
                            ArrStrShuJu[1] = "PL12_20" + strFilePath;
                        }
                        else
                        {
                            ArrStrShuJu[1] = "PL12_" + strFilePath;
                        }
                        ArrStrShuJu[0] = "PL12";
                        ArrStrShuJu[2] = "仿真机数据";
                        dt.Rows.Add(ArrStrShuJu);

                    }

                    ds.Tables.Add(dt);
                    sr.Close();
                }
            }
            return ds;
        }
        #endregion

    }
    #endregion

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -