• 整理C# 读取文件Scv格式代码


    第一次在博客园发博客,直接上代码 大家都懂得!

         #region Scv格式文件读取和生成
            /// <summary>
            /// 对读取到的cvs单独一行内容进行处理,去掉Csv格式,返回常规字符串,每项之间用特殊字符“^”隔开
            /// </summary>
            /// <param name="str"></param>
            /// <returns></returns>
            private static string DealCode(string str)
            {
                string s = "";
                int k = 1;
                if (str.Length == 0) return "";
                str = str.Replace("^", "");
                for (int i = 0; i < str.Length; i++)
                {
                    switch (str.Substring(i, 1))
                    {
                        case "\"":
                            s += str.Substring(i, 1);
                            k++;
                            break;
                        case ",":
                            if (k % 2 == 0)
                                s += str.Substring(i, 1);
                            else
                                s += "^";
                            break;
                        default: s += str.Substring(i, 1); break;
                    }
                }
                return s;
            }
            /// <summary>
            /// 对单引号和双引号处理
            /// </summary>
            /// <param name="tmp"></param>
            /// <returns></returns>
            private static string[] DealCode2(string[] tmp)
            {
                string[] tmps = new string[tmp.Length];
                for (int i = 0; i < tmp.Length; i++)
                {
                    string temp = tmp[i].Replace("\"\"", "^");
                    temp = temp.Replace("\"", "");
                    temp = temp.Replace("^", "\"");
                    temp = temp.Replace("''", "∵");
                    temp = temp.Replace("∵", "'");
                    tmps[i] = temp;
                }
                return tmps;
            }
            /// <summary>
            /// 获取Scv文件
            /// </summary>
            /// <param name="reader">System.IO.StreamReader流</param>
            /// <returns>返回List<string[]>数组</returns>
            public static List<string[]> GetScv(System.IO.StreamReader reader)
            {
                List<string[]> list = new List<string[]>();
                string strline="";
                while ((strline = reader.ReadLine()) != null)//每次单独抽取Csv一行的内容来处理
                {
                    strline = DealCode(strline).Replace("'", "''");//调用函数处理每一行内容
                    string[] strs = strline.Split(new char[] { '^' });//对处理后的内容进行特殊字符“^”分隔就得到了常规的字符数组了,你就可以进行其他用途了。
                    strs = DealCode2(strs);
                    list.Add(strs);
                }
                return list;
            }
            //输出Csv格式数据
            /// <summary>
            /// 输出Csv格式文件
            /// </summary>
            /// <param name="dt"></param>
            public static void CreateCsv(DataTable dt)
            {
                StringWriter sw = new StringWriter();
                string column = "";
                foreach (DataColumn item in dt.Columns)
                {
                    column += item + ",";
                }
                column = column.Trim(',');
                sw.WriteLine(column);//添加行s
    
                foreach (DataRow row in dt.Rows)
                {
                    string rows = "";
                    foreach (DataColumn col in dt.Columns)
                    {
                        rows += row[col] + ",";//添加列
                    }
                    rows = rows.Trim(',');
                    sw.WriteLine(rows);
                }
                sw.Close();
                System.Web.HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=DomeCsv" + DateTime.Now.ToShortTimeString() + ".csv");
                System.Web.HttpContext.Current.Response.ContentType = "application/ms-excel";
                System.Web.HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
                System.Web.HttpContext.Current.Response.Write(sw);
                System.Web.HttpContext.Current.Response.End();
            }
            #endregion
    

      

  • 相关阅读:
    lucene初探
    直接插入排序算法(java)
    快速排序优化算法
    大根堆
    学习资料地址
    Lucene:基于Java的全文检索引擎简介
    开关按钮
    微信小程序—如何获取用户输入文本框的值
    微信小程序—获取用户网络状态和设备的信息
    Bootstrap 导航栏
  • 原文地址:https://www.cnblogs.com/baily/p/2194690.html
Copyright © 2020-2023  润新知