这是我的.txt文件和一些代码的连接字符串
public class FileTransfers
{
public void fileFromDrive(string filename)
{
FileInfo file = new FileInfo(filename);
string fileConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
file.DirectoryName +
"; Extended Properties='text;HDR=YES;FMT=Delimited(,)';";
using (OleDbConnection con = new OleDbConnection(fileConnectionString))
{
using (OleDbCommand cmd = new OleDbCommand(
string.Format("SELECT * FROM [{0}]", file.Name), con))
{
con.Open();
using (OleDbDataAdapter adp = new OleDbDataAdapter(cmd))
{
DataTable tbl = new DataTable("Attendance");
adp.Fill(tbl);
}
}
}
}
}
但问题是当我在tbl
中调试记录时,它只显示一列中的数据,但我的.txt文件中有7个多列,数百行。
我尝试了FMT=Delimited(,), FMT=TabDelimited,FMT=FiXed
,但没有多列。我知道每个条目都需要一个(,)at is end,但我不能手动完成。
答案 0 :(得分:1)
正如Jan Schreuder在他的文章Using OleDb to Import Text Files中提到的那样,你需要考虑一些细节来做这个过程,
Jet引擎对文件内容做出假设。这个 可能导致错误的导入。例如,它可能会认为是一个列 包含日期值。但实际上,您的文件应该处理列 作为一个字符串。在这些情况下,您应该创建一个Schema.Ini文件 描述每列的值类型。这个班创造了一个 Schema.Ini文件在打开分隔文件之前,但仅限于 指定分隔符是什么。您可能想要将其更改为使用 用于描述输入文件的预定义INI文件。
所以继续按照规定创建schema.ini
文件,你的问题将全部消失。它的内容应该是这样的,
[FileName.csv]
ColNameHeader=True
Format=CSVDelimited
有关如何参考以下MSDN指南的详细信息,