C# 如何循环读取TXT文本中的数据,第一行和最后一行的数据不要,取逗号之间的数据,显示在datagridview中
B,,,,,,,,,,,,,,,,,,,,,,,,,,,361866,SCB8122A,,,110N001000,,,17,JPY,20110826,08002900,,...
B,,,,,,,,,,,,,,,,,,,,,,,,,,,
361866,SCB8122A,,,110N001000,,,17,JPY,20110826,08002900,,,,80,0,,3704,3704,3704,3704,3704,0,0,0,0,0,20110829,84824000
361867,SCB8122A,,,110N001000,,,17,JPY,20110826,16400900,,,,302,0,,836,836,836,836,836,0,0,0,0,0,20110829,84824000
361868,SCB8122A,,,110N001000,,,17,JPY,20110826,01401210,,,,3000,0,,76,76,76,76,76,0,0,0,0,0,20110829,84824000
361870,ACK8124S,,,110N001000,,,17,JPY,20110826,28068947,,,,10,0,,2147,2147,2147,2147,2147,0,0,0,0,0,20110829,84824000
361885,NTCW0003S,,,110N001000,,,17,JPY,20110826,08002900,,,,80,0,,3704,3704,3704,3704,3704,0,0,0,0,0,20110829,84824000
E,,,,,,,,,,,,,,,,,,,,,,,,,,, 展开
361866,SCB8122A,,,110N001000,,,17,JPY,20110826,08002900,,,,80,0,,3704,3704,3704,3704,3704,0,0,0,0,0,20110829,84824000
361867,SCB8122A,,,110N001000,,,17,JPY,20110826,16400900,,,,302,0,,836,836,836,836,836,0,0,0,0,0,20110829,84824000
361868,SCB8122A,,,110N001000,,,17,JPY,20110826,01401210,,,,3000,0,,76,76,76,76,76,0,0,0,0,0,20110829,84824000
361870,ACK8124S,,,110N001000,,,17,JPY,20110826,28068947,,,,10,0,,2147,2147,2147,2147,2147,0,0,0,0,0,20110829,84824000
361885,NTCW0003S,,,110N001000,,,17,JPY,20110826,08002900,,,,80,0,,3704,3704,3704,3704,3704,0,0,0,0,0,20110829,84824000
E,,,,,,,,,,,,,,,,,,,,,,,,,,, 展开
3个回答
展开全部
using System;
using System.IO;namespace File_read
{
class FileRead
{
static void Main(string[] args)
{
//创建 FileRead 的对象 fr
FileRead fr = new FileRead();
//调用 FileRead 类内的 ReadData 方法
fr.ReadData();
//程序暂停一下,看看结果~
Console.ReadLine(); }
// ReadData 方法
public void ReadData()
{
//C#读取TXT文件之创建 FileStream 的对象,说白了告诉程序,
//文件在那里,对文件如何处理,对文件内容采取的处理方式
FileStream fs = new FileStream("Niit.txt", FileMode.Open, FileAccess.Read);
//仅 对文本 进行 读写操作
StreamReader sr = new StreamReader(fs);
//定位操作点,begin 是一个参考点
sr.BaseStream.Seek(0, SeekOrigin.Begin);
//读一下,看看文件内有没有内容,为下一步循环 提供判断依据
//sr.ReadLine() 这里是 StreamReader的方法 可不是 console 中的~
string str = sr.ReadLine();//如果 文件有内容
if(str != null)
str = sr.ReadLine();//如果文件有内容跳过第一行
string str1;
DataTable dt;
while (str != null)
{
if(!str.Contains("E,,,,,,,,,,,,,,"))
{
string[] str1=str.Split (',');
if(dt==null)
{
dt = new DataTable();
for(int i=0;i<str1.Length;i++)
{
dt.Columns.Add(i.Tostring());
}
}
DataRow dr = dt.NewRow();
for(int j=0;j<str1.Length;j++)
{
dr[j]=str1[j];
}
dt.Rows.Add(dr);
str = sr.ReadLine();
}
//C#读取TXT文件之关闭文件,注意顺序,先对文件内部进行关闭,然后才是文件~
sr.Close();
fs.Close();
}
}
}
using System.IO;namespace File_read
{
class FileRead
{
static void Main(string[] args)
{
//创建 FileRead 的对象 fr
FileRead fr = new FileRead();
//调用 FileRead 类内的 ReadData 方法
fr.ReadData();
//程序暂停一下,看看结果~
Console.ReadLine(); }
// ReadData 方法
public void ReadData()
{
//C#读取TXT文件之创建 FileStream 的对象,说白了告诉程序,
//文件在那里,对文件如何处理,对文件内容采取的处理方式
FileStream fs = new FileStream("Niit.txt", FileMode.Open, FileAccess.Read);
//仅 对文本 进行 读写操作
StreamReader sr = new StreamReader(fs);
//定位操作点,begin 是一个参考点
sr.BaseStream.Seek(0, SeekOrigin.Begin);
//读一下,看看文件内有没有内容,为下一步循环 提供判断依据
//sr.ReadLine() 这里是 StreamReader的方法 可不是 console 中的~
string str = sr.ReadLine();//如果 文件有内容
if(str != null)
str = sr.ReadLine();//如果文件有内容跳过第一行
string str1;
DataTable dt;
while (str != null)
{
if(!str.Contains("E,,,,,,,,,,,,,,"))
{
string[] str1=str.Split (',');
if(dt==null)
{
dt = new DataTable();
for(int i=0;i<str1.Length;i++)
{
dt.Columns.Add(i.Tostring());
}
}
DataRow dr = dt.NewRow();
for(int j=0;j<str1.Length;j++)
{
dr[j]=str1[j];
}
dt.Rows.Add(dr);
str = sr.ReadLine();
}
//C#读取TXT文件之关闭文件,注意顺序,先对文件内部进行关闭,然后才是文件~
sr.Close();
fs.Close();
}
}
}
展开全部
private DataTable ReadTextFile(string FileName)
{
try
{
string[] strText = System.IO.File.ReadAllLines(FileName);
if (strText.Length > 0)
{
DataTable dtData = new DataTable();
for (int intIdx = 0; intIdx < strText.Length - 1; intIdx++)//strText.Length - 1去掉了最后一行
{
string[] strLine = strText[intIdx].Split(',');
if (intIdx == 0)
{
//由于第一行不要,此处只用来创建表结构,添加列
for (int intText = 0; intText < strLine.Length; intText++)
{
dtData.Columns.Add("C" + intText.ToString().PadLeft(4, '0'));
}
}
else
{
//若要第一行,只需去掉【else】
DataRow drRow = dtData.NewRow();
for (int intText = 0; intText < strLine.Length; intText++)
{
drRow[intText] = strLine[intText];//intText赋值
}
dtData.Rows.Add(drRow);
}
}
return dtData;
}
else
{
return null;
}
}
catch (Exception ex)
{
throw ex;
}
}
{
try
{
string[] strText = System.IO.File.ReadAllLines(FileName);
if (strText.Length > 0)
{
DataTable dtData = new DataTable();
for (int intIdx = 0; intIdx < strText.Length - 1; intIdx++)//strText.Length - 1去掉了最后一行
{
string[] strLine = strText[intIdx].Split(',');
if (intIdx == 0)
{
//由于第一行不要,此处只用来创建表结构,添加列
for (int intText = 0; intText < strLine.Length; intText++)
{
dtData.Columns.Add("C" + intText.ToString().PadLeft(4, '0'));
}
}
else
{
//若要第一行,只需去掉【else】
DataRow drRow = dtData.NewRow();
for (int intText = 0; intText < strLine.Length; intText++)
{
drRow[intText] = strLine[intText];//intText赋值
}
dtData.Rows.Add(drRow);
}
}
return dtData;
}
else
{
return null;
}
}
catch (Exception ex)
{
throw ex;
}
}
追问
你的方法挺好的 就是有一点 每行的最后一组数据添加不进去(因为它后面没有逗号) 我想问一下 如何把最后一组数据加进去
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
全部读取txt , 然后用split 分割 ;插入dgv
可以考虑,dg中用import ,然后删除 第一和最后一行,不知道成不。
可以考虑,dg中用import ,然后删除 第一和最后一行,不知道成不。
追问
能将代码贴出来么~~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询