zoukankan      html  css  js  c++  java
  • 整理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
    

      

  • 相关阅读:
    SpringMVC 注解大全
    Maven实战--- dependencies与dependencyManagement的区别
    SpringMVC5.2.0 使用到 WebDataBinderFactory.createDataBinder 方法的类
    Spring DataBinder
    mysql 查询主键外键
    objectMapper.canSerialize SpringMVC实体转JSON字符串
    整合SSM时启动Tomcat报nested exception is java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/exc/InvalidDefinitionException
    synchronizeOnSession
    init-method afterPropertiesSet BeanPostProcessor 执行顺序
    SpringMVC中重定向参数的使用以及原理解析 RedirectAttributes
  • 原文地址:https://www.cnblogs.com/baily/p/2194690.html
Copyright © 2011-2022 走看看