Files
2026-07-14 13:55:17 +08:00

101 lines
3.5 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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;
}
}
}
}