C# 怎么读txt文件到DataGridView里面并显示,文件是多行多列的配置文件

[复制链接]
查看11 | 回复8 | 2021-1-27 06:27:19 | 显示全部楼层 |阅读模式
求大神讲解啊。


usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Windows.Forms;
usingSystem.Data.SqlClient;
usingSystem.IO;
namespaceWindowsFormsApplication1
{
publicpartialclassForm1:Form
{
publicForm1()
{
InitializeComponent();
}
privatevoidbutton1_Click(objectsender,EventArgse)
{
using(OpenFileDialogdlgText=newOpenFileDialog())
{
dlgText.Filter="文本文件|*.txt";
if(dlgText.ShowDialog()==DialogResult.OK)
{
//新建一个datatable用于保存读入的数据
DataTabledt=newDataTable();
//给datatable添加三个列
dt.Columns.Add("ID",typeof(String));
dt.Columns.Add("Name",typeof(String));
dt.Columns.Add("level",typeof(String));
dt.Columns.Add("nextlevelexp",typeof(String));
dt.Columns.Add("BodyRadius",typeof(String));
dt.Columns.Add("BaseWalkSpeed",typeof(String));
dt.Columns.Add("BaseMaxHp",typeof(String));
dt.Columns.Add("BaseAtkSpeed",typeof(String));
dt.Columns.Add("BaseNormalAtk",typeof(String));
dt.Columns.Add("BaseNormalDef",typeof(String));
dt.Columns.Add("BaseHitValue",typeof(String));
dt.Columns.Add("BaseDodgeValue",typeof(String));
dt.Columns.Add("BaseCritValue",typeof(String));
dt.Columns.Add("BaseCritAvoidValue",typeof(String));
//读入文件
using(StreamReaderreader=newStreamReader(dlgText.FileName,Encoding.Default))
{
//循环读取所有行
while(!reader.EndOfStream)
{
//将每行数据,用-分割成3段
string[]data=reader.ReadLine().Replace("","-").Split('-');
//新建一行,并将读出的数据分段,分别存入3个对应的列中
if(data.Length==14)
{
DataRowdr=dt.NewRow();
//intindex=dt.Rows.Add();
dr[0]=data[0];
dr[1]=data[1];
dr[2]=data[2];
dr[3]=data[3];
dr[4]=data[4];
dr[5]=data[5];
dr[6]=data[6];
dr[7]=data[7];
dr[8]=data[8];
dr[9]=data[9];
dr[10]=data[10];
dr[11]=data[11];
dr[12]=data[12];
dr[13]=data[13];
//将这行数据加入到datatable中
dt.Rows.Add(dr);
}
dataGridView1.DataSource=dt;
}
}
//将datatable绑定到datagridview上显示结果
this.dataGridView1.DataSource=dt;
}
}
}

privatevoiddataGridView1_CellContentClick(objectsender,DataGridViewCellEventArgse)
{
//dataGridview1.rows.add(item[索引])
}
privatevoiddataGridView1_CellContentClick_1(objectsender,DataGridViewCellEventArgse)
{
}
}
}

分 -->
回复

使用道具 举报

千问 | 2021-1-27 06:27:19 | 显示全部楼层
有很多行很多列,该怎么读取
回复

使用道具 举报

千问 | 2021-1-27 06:27:19 | 显示全部楼层
file.readAll可以直接读取整个文件的内容
每一行用split分隔数据即可,
貌似你已经实现了啊,为什么还要问
回复

使用道具 举报

千问 | 2021-1-27 06:27:19 | 显示全部楼层
读出来不正却,我是要读很多个txt文件,这个只能一个。而且我显示出来没有列的数据
回复

使用道具 举报

千问 | 2021-1-27 06:27:19 | 显示全部楼层
换成随便打开一个excel文件显示成表格形式,程序游戏配置文件那种
回复

使用道具 举报

千问 | 2021-1-27 06:27:19 | 显示全部楼层
引用3楼Karail的回复:读出来不正却,我是要读很多个txt文件,这个只能一个。而且我显示出来没有列的数据文件很多就逐个读取就是了Listlist=newList();//list存放所有txt文件路径
string[]files=System.IO.Directory.GetFiles(txtPath);//txtPath为txt所在路径
foreach(stringstrinfiles)
{
string[]temp=str.Split(new[]{"."},StringSplitOptions.None);
if(temp[1]=="pdf")
{
list.Add(str);
}
}
for(inti=0;i我们也不知道你的txt内容是什么样的格式,关于拆分,看你的格式,网上找示例就行
回复

使用道具 举报

千问 | 2021-1-27 06:27:19 | 显示全部楼层
引用5楼u011981242的回复:Quote: 引用3楼Karail的回复:
读出来不正却,我是要读很多个txt文件,这个只能一个。而且我显示出来没有列的数据
文件很多就逐个读取就是了Listlist=newList();//list存放所有txt文件路径
string[]files=System.IO.Directory.GetFiles(txtPath);//txtPath为txt所在路径
foreach(stringstrinfiles)
{
string[]temp=str.Split(new[]{"."},StringSplitOptions.None);
if(temp[1]=="pdf")
{
list.Add(str);
}
}
for(inti=0;i我们也不知道你的txt内容是什么样的格式,关于拆分,看你的格式,网上找示例就行
“pdf”改为“txt”
回复

使用道具 举报

千问 | 2021-1-27 06:27:19 | 显示全部楼层
您好,我按照您给的方式读取txt文件,一开始是可以读取的,但我发现换了一个路径就无法读取,这是怎么回事呢?
回复

使用道具 举报

千问 | 2021-1-27 06:27:19 | 显示全部楼层
用一个数字,是可以循环读取txt文件内容的,更是容易用循环放到Datagridview。但是在Txt文件中处理很烦人。不如换数据库吧。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行