zoukankan      html  css  js  c++  java
  • TXT 与 DataTable 互转

        //*********************************************************************************************
        public static DataTable TXT_To_DataTable(string dirTXT)
        {
            StreamReader objReader = new StreamReader(dirTXT, Encoding.Default);
            DataTable dt = new DataTable();
            string strline;
            string[] aryline;
            bool blnFlag = false;
            while ((strline = objReader.ReadLine()) != null)
            {
                aryline = strline.Split(new char[] { '	' }, StringSplitOptions.None);
                if (blnFlag == false)
                {
                    DataColumn mydc = null;
                    foreach (string str in aryline)
                    {
                        mydc = new DataColumn(str);
                        dt.Columns.Add(mydc);
                    }
                    blnFlag = true;
                }
                else
                {
                    dt.Rows.Add(aryline);
                }
            }
    
            objReader.Close();
            return dt;
        }
        /// <summary>
        /// 以Tab键为间隔,以Tab键表示空值
        /// </summary>
        /// <param name="dirTXT"></param>
        /// <returns></returns>
        public static DataTable TXT_To_DataTable2(string dirTXT)
        {
            StreamReader objReader = new StreamReader(dirTXT, Encoding.Default);
            DataTable dt = new DataTable();
            string strline;
            string[] aryline;
            bool blnFlag = false;
            while ((strline = objReader.ReadLine()) != null)
            {
                aryline = strline.Split(new char[] { '	' }, StringSplitOptions.None);
                if (blnFlag == false)
                {
                    foreach (string str in aryline)
                    {
                        if (!string.IsNullOrEmpty(str))
                        {
                            DataColumn mydc = new DataColumn(str);
                            dt.Columns.Add(mydc);
                        }
                    }
                    blnFlag = true;
                }
                else
                {
                    if (aryline.Count() != dt.Columns.Count)
                    {
                        strline = Lines_To_Replace(strline);
                        aryline = strline.Split(new char[] { '	' }, StringSplitOptions.None);
                    }
                    dt.Rows.Add(aryline);
                }
            }
            objReader.Close();
            return dt;
        }
        public static string Lines_To_Replace(string lines)
        {
            for (int i = 0; i < lines.Length; i++)
            {
                if (i != lines.Length - 1 &&
                    i > 0 &&
                    lines.Substring(i - 1, 1) == "	" &&
                    lines.Substring(i, 1) == "	" &&
                    lines.Substring(i + 1, 1) == "	")
                {
                    //lines.Substring(i, 1) = "";
                    lines = lines.Substring(0, i) + "" + lines.Substring(i + 1, lines.Length - i - 1);
                }
            }
            return lines;
        }
        /// <summary>
        /// 以空格键为间隔,没有空值
        /// </summary>
        /// <param name="dirTXT"></param>
        /// <returns></returns>
        public static DataTable TXT_To_DataTable3(string dirTXT)
        {
            StreamReader objReader = new StreamReader(dirTXT, Encoding.Default);
            DataTable dt = new DataTable();
            string strline;
            bool OK = false;
            while ((strline = objReader.ReadLine()) != null)
            {
                List<string> list = new List<string>();
                string tmp = "";
                while (strline.Contains(" "))
                {
                    tmp = strline.Substring(0, strline.IndexOf(" "));
                    strline = strline.Substring(strline.IndexOf(" ") + 1, strline.Length - strline.IndexOf(" ") - 1).Trim();
                    if (!string.IsNullOrEmpty(tmp))
                        list.Add(tmp);
                }
                if (!string.IsNullOrEmpty(strline))
                    list.Add(strline);
                if (!OK)
                {
                    foreach (string str in list)
                    {
                        if (!string.IsNullOrEmpty(str))
                        {
                            DataColumn mydc = new DataColumn(str);
                            dt.Columns.Add(mydc);
                        }
                    }
                    OK = true;
                }
                else
                dt.Rows.Add(list.ToArray());
            }
            objReader.Close();
            return dt;
        }
    
        /// <summary>
        /// DataTable导出到TXT 以Tab为分隔符,以Tab表示空值
        /// </summary>
        /// <param name="table"></param>
        /// <param name="fullName"></param>
        /// <param name="Msg"></param>
        /// <returns></returns>
        public static bool DataTable_To_TXT2(DataTable table, string fullName, ref string Msg)
        {
            PathHelper.Check_Directory(fullName);
            if (table == null || table.Rows.Count == 0)
            {
                Msg += fullName + " 对应的 DataTable 没有数据";
                return false;
            }
    
            FileStream fileStream = new FileStream(fullName, FileMode.Create);
            StreamWriter streamWriter = new StreamWriter(fileStream, System.Text.Encoding.UTF8);
            StringBuilder strBuilder = new StringBuilder();
    
            for (int j = 0; j < table.Columns.Count; j++)
            {
                string str1 = table.Columns[j].Caption;
    
                if (j == table.Columns.Count - 1)
                {
                    strBuilder.AppendLine(str1);
                }
                else
                {
                    str1 += "	";
                    strBuilder.Append(str1);
                }
            }
    
            for (int i = 0; i < table.Rows.Count - 1; i++)
            {
                for (int j = 0; j < table.Columns.Count; j++)
                {
                    string str1 = table.Rows[i][j].NullableToString();
    
                    if (string.IsNullOrEmpty(str1) || str1 == "")
                        str1 = "	";
    
                    if (j == table.Columns.Count - 1)
                    {
                        strBuilder.AppendLine(str1);
                    }
                    else
                    {
                        str1 += "	";
                        strBuilder.Append(str1);
                    }
                }
            }
    
            streamWriter.WriteLine(strBuilder.ToString());
            streamWriter.Close();
            fileStream.Close();
            return true;
        }
        public static bool DataTable_To_TXT(DataTable table, string fullName, ref string Msg)
        {
            PathHelper.Check_Directory(fullName);
            if (table == null || table.Rows.Count == 0)
            {
                Msg += fullName + " 对应的 DataTable 没有数据";
                return false;
            }
            int[] iColumnLength = new int[table.Columns.Count];
            FileStream fileStream = new FileStream(fullName, FileMode.Create);
            StreamWriter streamWriter = new StreamWriter(fileStream, System.Text.Encoding.Unicode);
            StringBuilder strBuilder = new StringBuilder();
    
            for (int i = 0; i < table.Columns.Count; i++)
            {
                int iLength = 0;
                for (int j = 0; j < table.Rows.Count; j++)
                {
                    if (iLength < (table.Rows[j][i].ToString()).Length)
                    {
                        iLength = (table.Rows[j][i].ToString()).Length;
                        if ((table.Rows[j][i].ToString()).Length < table.Columns[i].Caption.Length)
                        {
                            iLength = table.Columns[i].Caption.Length;
                        }
                    }
    
                }
                iColumnLength[i] = iLength + 1;
            }
    
            for (int j = 0; j < table.Columns.Count; j++)
            {
                string str1 = table.Columns[j].Caption;
                int iLength = str1.Length;
                int iColumnWidth = iColumnLength[j] + 4;
    
                for (int k = iLength; k < iColumnWidth; k++)
                {
                    str1 += " ";
                }
    
                if (j == table.Columns.Count - 1)
                {
                    strBuilder.AppendLine(str1);
                }
                else
                {
                    strBuilder.Append(str1);
                }
            }
    
            for (int i = 0; i < table.Rows.Count - 1; i++)
            {
                for (int j = 0; j < table.Columns.Count; j++)
                {
                    string str1 = table.Rows[i][j].NullableToString();
                    if (string.IsNullOrEmpty(str1))
                        str1 = "";
                    int iLength = str1.Length;
                    int iColumnWidth = iColumnLength[j] + 4;
    
                    for (int k = iLength; k < iColumnWidth; k++)
                    {
                        str1 += " ";
                    }
                    if (j == table.Columns.Count - 1)
                    {
                        strBuilder.AppendLine(str1);
                    }
                    else
                    {
                        strBuilder.Append(str1);
                    }
                }
            }
    
            streamWriter.WriteLine(strBuilder.ToString());
            streamWriter.Close();
            fileStream.Close();
            return true;
        }
        //****************************************************************************************
  • 相关阅读:
    驱动编程:内存管理基本函数
    POOL_TYPE enumeration
    远程服务器下载jenkins上生成的war包,失败原因
    jenkins ssh 报错
    git分组
    免密登录
    jenkins 生成war包后的下载
    redis 连接失败
    nginx+tomcat+https
    jenkins 拉取 git 代码成功版本
  • 原文地址:https://www.cnblogs.com/ilookbo/p/4727560.html
Copyright © 2011-2022 走看看