[netMarketing类库] CSVHelper 类:创建与解析由逗号分隔符构成的CSV文件,及其它相关的功能

命名空间:sharClass

功能:创建或者解析标准逗号分隔符的CSV文件,以及CSV相关的其它功能


功能详细说明:

在自动化机器的程序中,保存生产数据广泛应用CSV文件格式。EXCEL中就可以把文档保存为CSV格式,它其实是一种文本文件,只不过要求以特定的符号分隔两个字段内容,详细情况各位可以用EXCEL实验一下就知道了。

勇哥不推荐使用mdb数据库方式保存生产数据,虽然看上去它拥有查询方便的优势,但是因为access数据库的单个文件大小有限制(貌似是2G),超出这个大小,运行效率直线降低,所以并不推荐使用mdb数据库方式。当然Sql Server数据库是完全没有这种问题的,但是使用它来保存生产数据,简直可称得上高射炮打蚊子。


介绍一则勇哥之前使用mdb数据库得到的教训:

勇哥之前有台机器,带视觉检测的,每天生产会产生5000条生产数据。在调试阶段时就发现经常程序会偶尔在视觉工位卡住,然后程序界面失去响应一会,最后卡的机率是越来越多。

这个问题折磨了勇哥一个多星期,最恐怖的时候是白班夜班都会找我,完全不让我休息,人差点搞崩溃。

最后还是微软的CLR Profiler这个调试工具拯救了我,它是用于检测内存溢出和程序占用CPU时间的专业工具。

通过它我找到了程序的两个问题。

一是程序中有一处字符串拼接,会疯狂占用内存上G!

二是程序中当写入mdb数据库的时候,有机率会占用CPU时间很高,有时候超过20几秒!!


我立刻排查mdb数据库,发现其有2G巨大,然后度娘告诉我,很有可能造成这个写入超时的原因是因为数据库太大了引发的。

在这个结论出来之前,我从来来不怀疑mdb数据库会有这种写入超时的问题,打死我也不会相信。因为之前一般的小网站使用的也就是mdb数据库,几十上百人的并发访问都是可以承受的。

勇哥血的教训啊!各位记得生产数据最好是使用CSV格式一条条的保存!


CSVHelper类中只支持逗号分隔的CSV格式,它按如下的规则来处理CSV数据:

1. 字段中包含有逗号,该字段必须用双引号括起来

2. 字段中包含有换行符,该字段必须用双引号括起来

3. 字段中的双引号用两个双引号表示


下面是一篇博文是关于淘宝CSV文件格式的研究,各位可以参考一下。

https://www.cnblogs.com/hackpig/archive/2010/02/14/1668222.html

考虑到我们只是用于自动化行业,因为勇哥并没有花时间完全实现上面文章的规则,因此这个类还解析不了淘宝的CSV文件。

但是它对于解析字段内容包含有引号与逗号的情况还是可以应付的。


常用函数列表:

//生成一条符合CSV格式的字符串
public static string createCSVRow(this List<string> data)
//拆分一条逗号分隔的CSV字符串
public static List<string> explainCSVRow(this string data)
/// 保存数据到CSV文件(托管式)
public static void SaveAsy(string filePath,string fileName, string content,bool IsSave=true)
/// 将DataTable中数据写入到CSV文件中
public static void ConvertDataTableToVSV(DataTable dt, string fullPath)
/// 将CSV文件的数据读取到DataTable中
public static DataTable ReadCSV(string filePath)
/// 删除多余Log文件:支持文件名为"yyyyMMdd.csv"格式
private static void DeleteOverFile(string FilePath,int howDays)


参考例子:


using sharClass;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace csvhelperTest
{
    public partial class Form1 : Form
    {
        private string path = AppDomain.CurrentDomain.BaseDirectory + "csvdata.csv";
        private List<string> list1 = new List<string>();
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            var txt = tblistField.Text;
            if(txt.Length>0)
            {
                list1.Add(txt);
            }
            listBox1.DataSource = null;
            listBox1.DataSource = list1;
        }

        private void btnCreateCSV_Click(object sender, EventArgs e)
        {
            try
            {
                var s1 = CSVHelper.createCSVRow(list1);
                File.WriteAllText(path, s1);
                System.Diagnostics.Process.Start(path);
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void btnReadCSV_Click(object sender, EventArgs e)
        {
            try
            {
                var list2 = CSVHelper.explainCSVRow(File.ReadAllText(path));
                listBox2.DataSource = null;
                listBox2.DataSource = list2;
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
    }
}



输入字段

image.png


Excel查看生成的csv文件的内容

image.png

读取csv文件显示到listbox

image.png


netMarketing类库中,凡是要用到逗号分隔字符串的地方,都会考虑到使用CSVHelper类。



代码下载


--------------------- 

作者:hackpig
来源:
www.skcircle.com
版权声明:本文为博主原创文章,转载请附上博文链接!


本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«    2024年3月    »
123
45678910
11121314151617
18192021222324
25262728293031
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864