我有以下代码,我尝试了在线上提到的所有内容,但无法从文本文件中读取数据。
string path=@"D:New folderabc.txt"
string pathOnly = Path.GetDirectoryName(path);
string fileName = Path.GetFileName(path);
string excelConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + pathOnly + @";Extended Properties=""text;HDR=YES;FMT=TabDelimited""";
OleDbConnection excelConnection = new OleDbConnection(excelConnectionString);
excelConnection.Open();
OleDbCommand cmd = excelConnection.CreateCommand();
cmd.CommandText = String.Format("SELECT * FROM [{0}]", fileName);
OleDbDataReader dReader;
dReader = cmd.ExecuteReader();
DateTime UploadedDate = DateTime.Now;
DataTable sourceData = new DataTable();
sourceData.Load(dReader);
DataColumn col = new DataColumn("UploadedDateCol", typeof(DateTime));
col.DefaultValue = UploadedDate;
sourceData.Columns.Add(col);
int x = sourceData.Rows.Count;
此 x 值始终为 0。我的 PC 是 64 位 PC。或者,是否有任何其他库可用于批量上传。
我的.txt文件如下:这些值由制表符或管道(|)分隔
0421230424 3391542691 5295963551 2755344586 12345678
就制表符分隔的文件而言,您应该始终查看FileHelper库。
不要重新发明轮子,这个库非常成熟。
文件帮助程序是一个免费且易于使用的 .NET 库,用于 从文件中的固定长度或分隔记录导入/导出数据, 字符串或流。
这个想法很简单:
您可以简单地强键入平面文件(固定或分隔) 描述映射到每条记录并在以后读取/写入您的 文件作为强类型 .NET 数组
该库还支持从不同的导入/导出数据 存储,如Excel,Access,SqlServer等。
为了克服这个问题,Schema.ini
文件中定义了详细信息。 如果文件名是ABC.txt那么它需要在同一位置创建abc.ini文件。
string iniFileMsg = "[" + newfileName + ".txt]";
StreamWriter sw = new StreamWriter(newFilePath + "/schema.ini", false);
sw.WriteLine(iniFileMsg);
sw.WriteLine("Format=Delimited(|)");
sw.WriteLine("ColNameHeader=True");
sw.Flush();
如果你有不同的coumns,那么它需要添加如下:
List<string> columns = excelobj.GetCSVColumnNames(excelUploadedFullPath);
// sw.WriteLine("Col1=Phone Text Width 10");
for (int i = 0; i < columns.Count; i++)
{
sw.WriteLine("Col" + (i + 1) + "=" + columns[i].Replace(" ", "_") + " Text Width 100");
}
sw.Flush();
sw.Close();
从GetCSVColumnNames()我得到了列名。 之后我按照上述方法上传数据