101 lines
3.5 KiB
C#
101 lines
3.5 KiB
C#
using CsvHelper;
|
||
using JY.Utility;
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.Globalization;
|
||
using System.IO;
|
||
using System.Linq;
|
||
using System.Text;
|
||
using System.Threading.Tasks;
|
||
using System.Windows.Forms;
|
||
|
||
namespace JY.Inspection
|
||
{
|
||
public class CSVHelper<T>
|
||
{
|
||
/// <summary>
|
||
/// 读取CSV文件
|
||
/// </summary>
|
||
/// <param name="fileName">csv文件名</param>
|
||
/// <returns></returns>
|
||
public static List<T> ReadCSV(string fileName, string strSeparator = "\t")
|
||
{
|
||
if (!File.Exists(fileName)) return null;
|
||
//Nuget获取CsvHelper
|
||
using (var reader = new StreamReader(fileName))
|
||
{
|
||
var cfg = new CsvHelper.Configuration.CsvConfiguration(CultureInfo.InvariantCulture)
|
||
{
|
||
Mode = CsvMode.Escape,
|
||
Escape = '\\',
|
||
Delimiter = strSeparator//设置分隔符号
|
||
};
|
||
using (var csv = new CsvReader(reader, cfg))
|
||
{
|
||
var list = csv.GetRecords<T>().ToList();
|
||
return list;
|
||
}
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 写入数据到csv文件
|
||
/// </summary>
|
||
/// <param name="filePath">所需存储文件夹路径(取系统所设定值,不带日期文件夹)</param>
|
||
/// <param name="data">数据源</param>
|
||
/// <param name="flag">1进站,2出站,3智能电表.csv,4预警</param>
|
||
/// <returns></returns>
|
||
public static bool WriteCSV(string filePath, List<T> data, int flag)
|
||
{
|
||
if (string.IsNullOrEmpty(filePath))
|
||
{
|
||
filePath = Application.StartupPath + "\\localData\\" + DateTime.Now.ToString("yyyyMMdd");
|
||
}
|
||
else
|
||
{
|
||
filePath = filePath + "\\" + DateTime.Now.ToString("yyyyMMdd");
|
||
}
|
||
if (!Directory.Exists(filePath))
|
||
{
|
||
Directory.CreateDirectory(filePath);
|
||
}
|
||
switch (flag)
|
||
{
|
||
case 1:
|
||
filePath = filePath + "\\" + DateTime.Now.ToString("yyyyMMdd") + "进站.csv";
|
||
break;
|
||
case 2:
|
||
filePath = filePath + "\\" + DateTime.Now.ToString("yyyyMMdd") + "出站.csv";
|
||
break;
|
||
case 3:
|
||
filePath = filePath + "\\" + DateTime.Now.ToString("yyyyMMdd") + "智能电表.csv";
|
||
break;
|
||
default:
|
||
filePath = filePath + "\\" + DateTime.Now.ToString("yyyyMMdd") + "报警.csv";
|
||
break;
|
||
}
|
||
try
|
||
{
|
||
var cfg = new CsvHelper.Configuration.CsvConfiguration(CultureInfo.InvariantCulture);
|
||
if (File.Exists(filePath))
|
||
{
|
||
cfg.HasHeaderRecord = false;//是否将第一行作为标题
|
||
}
|
||
using (var writer = new StreamWriter(filePath, true, Encoding.GetEncoding("GB2312")))
|
||
{
|
||
using (var csv = new CsvWriter(writer, cfg))
|
||
{
|
||
csv.WriteRecords(data);
|
||
}
|
||
}
|
||
return true;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
LogHelper.Error(ex.ToString());
|
||
return false;
|
||
}
|
||
}
|
||
}
|
||
}
|