【发布时间】:2017-03-29 09:35:22
【问题描述】:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using System.Data.OleDb;
using System.Reflection;
using CsvHelper.Configuration;
namespace ReadCsvFile
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public DataTable ReadCsv(string filename)
{
DataTable dt = new DataTable("Data");
using (OleDbConnection cn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\"" +
Path.GetDirectoryName(filename) + "\";Extended Properties='text;HDR=yes;FMT=Delimited(;)';"))
{
using (OleDbCommand cmd = new OleDbCommand(string.Format("select *from [{0}]", new FileInfo(filename).Name), cn))
{
cn.Open();
using (OleDbDataAdapter adapter = new OleDbDataAdapter(cmd))
{
adapter.Fill(dt);
}
}
}
return dt;
}
private void btnOpen_Click(object sender, EventArgs e)
{
try
{
using (OpenFileDialog ofd = new OpenFileDialog() { Filter = "CSV| *.csv", ValidateNames = true, Multiselect = true })
{
if (ofd.ShowDialog() == DialogResult.OK)
dataGridView.DataSource = ReadCsv(ofd.FileName);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Message", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}
事实证明,我尝试读取的 csv 文件使用分号 (;) 作为分隔符,而不是通常的逗号 (,)。
我尝试更改分隔符,但由于某种原因无法更改。
如果能得到任何帮助,我将不胜感激!
【问题讨论】: