今天做个小程序,需要批量读取CSV文件到数据库,网上有不少CSVHelper,但是看了下,多少都有点问题,主要是分割逗号问题,还有就是字段处理问题。我自己做了些改良,用起来不错。
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Windows;
namespace BtsMaster
{
public class CSVhelper
{
/// <summary>
/// 将Csv读入DataTable
/// </summary>
/// <param name="filePath">csv文件路径</param>
/// <param name="n">表示第n行是字段title,第n+1行是记录开始</param>
/// <param name="k">可选参数表示最后K行不算记录默认0</param>
public DataTable csv2dt(string filePath, int n,DataTable dt) //这个dt 是个空白的没有任何行列的DataTable
{
String csvSplitBy = "(?<=^|,)(\"(?:[^\"]|\"\")*\"|[^,]*)";
StreamReader reader = new StreamReader(filePath, System.Text.Encoding