我正在从数据表中读取csv文件,并且正在发生一些事情。
这是阅读
OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.Filter = "CSV Files|*.csv";
openFileDialog1.Title = "Select a CSV File";
if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
string connString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=Text;", System.IO.Path.GetDirectoryName(openFileDialog1.FileName));
string cmdString = string.Format("SELECT * FROM {0}", System.IO.Path.GetFileName(openFileDialog1.FileName));
OleDbDataAdapter dataAdapter = new OleDbDataAdapter(cmdString, connString);
DataTable tbl = new DataTable();
dataAdapter.Fill(tbl);
TableBuilder b = new TableBuilder(tbl);
List<SingleTable> tablelist = b.TableList;
}
当我查看可视化工具中的数据表时,它看起来像 ![第一行,而不是一行,是一个列标题] [1]
原始csv看起来像这样
![原csv] [2]
有人可以告诉我为什么数据表将第一行转换为列吗?我应该怎么做才能保留第一排?
答案 0 :(得分:1)
尝试告诉OLEDB-Provider该文件没有标题
Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=Text;HDR=no;
或者看看这个SO-Answer:https://stackoverflow.com/a/4598862/284240
答案 1 :(得分:1)
不确定这是否是您所需要的,因为您的问题似乎缺少某些内容。 但您可以将连接字符串更改为:
string connString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=Text;HDR=No", System.IO.Path.GetDirectoryName(openFileDialog1.FileName));
这将告诉连接第一行不是标题行。
答案 2 :(得分:0)
通常,如果你在数据中嵌入了额外的“,”,这会将每个逗号视为一个单独的列,当我做同样的事情时,我会发生这种情况。我必须检查导致该字段的列数据偏移..也有你正在创建的标题..?