zoukankan      html  css  js  c++  java
  • 导入导出数据到csv文件

    CSV文件基于文本格式,具有非依赖的特性,用来存放一些简单的数据再好不过了。csv文件的读取基本和文本文件一致。

    读取CSV文件

    public static DataTable ImportFromCSVAsText(string strFileName)
            {
                DataTable table = new DataTable();

                using (StreamReader reader = new StreamReader(strFileName, Encoding.UTF8))
                {
                    string line = null;
                    // 添加表头
                    if ((line = reader.ReadLine()) != null)
                    {
                        string[] heads = line.Split(',');
                        for (int i = 0; i < heads.Length; i++)
                        {
                            DataColumn column = new DataColumn(heads[i], typeof(string));
                            table.Columns.Add(column);
                        }
                    }
                    // 读取数据
                    while ((line = reader.ReadLine()) != null)
                    {
                        string[] fields = line.Split(',');
                        DataRow row = table.NewRow();
                        for (int i = 0; i < table.Columns.Count; i++)
                        {
                            row[i] = fields[i];
                        }

                        table.Rows.Add(row);
                    }
                }

                return table;
            }

    写入csv文件

    static string WriteFile(List<Entity> errorList)
    {
        string path = string.Empty;
        if (errorList != null && errorList.Count > 0)
        {
            string title = "ID,Country,CountryName,城市,CityCode,Address_intl,LAT,LON";
            path = AppDomain.CurrentDomain.BaseDirectory + @"Hotel_" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".csv";
            using (var stream = new FileStream(path, FileMode.Create))
            {
                using (var writer = new StreamWriter(new BufferedStream(stream), Encoding.UTF8))
                {
                    writer.WriteLine(title);
                    foreach (ExpandHotelInterfaceRequestDateErrorLog entity in errorList)
                    {

           StringBuilder line = new StringBuilder();
                        line.Append(FormatCsvContent(entity.ID.ToString()) + ",");
                        line.Append(FormatCsvContent(entity.Country) + ",");
                        line.Append(FormatCsvContent(entity.CountryName) + ",");
                        line.Append(FormatCsvContent(entity.City.ToString() + ",");
                        line.Append(FormatCsvContent(entity.CityCode) + ",");
                        line.Append(FormatCsvContent(entity.AddressInfo) + ",");
                        line.Append(FormatCsvContent(entity.LAT) + ",");
                        line.Append(FormatCsvContent(entity.LON) + ",");
                        writer.WriteLine(line.ToString());
                    }
                    writer.Flush();
                }
            }
        }

        return path;
    }

    /// <summary>
    /// CSV字段中含双引号 逗号时处理
    /// </summary>
    /// <param name="content">处理内容</param>
    /// <returns></returns>
    private static string FormatCsvContent(string content)
    {
        if (string.IsNullOrEmpty(content)) return content;

        if (content.Contains("""))//字段中存在双引号
        {
            content = content.Replace(""", """");
        }

        content = """ + content + """;

        content = content.Replace(",]", "]");
        return content;
    }

  • 相关阅读:
    Selenium(Python)等待元素出现
    java文件的I/O
    Map的四种遍历方式
    模板类实现链表
    字符串相关库函数使用
    动态规划之背包问题
    最长递增子序列
    深度优先搜索(DFS),逃离迷宫
    素数环问题(递归回溯)
    枚举(百鸡问题)
  • 原文地址:https://www.cnblogs.com/ahua1188/p/5360798.html
Copyright © 2011-2022 走看看