【C#】读取txt、csv等二维表
来源:互联网 发布:mysql的sequence 编辑:程序博客网 时间:2024/06/05 17:44
程序要读文件,在实战中主要还是以二维表为主,类似下图这种:
基本上除了掌握《【C#】txt的读写》(点击打开链接)的文件流的读写,还需要与《【C#】利用正则表达式判断输入是否为纯数字、容器类》(点击打开链接)灵活运用。本文将使用《【Java】一行代码读完记事本中的二维表》(点击打开链接)的思想,展示在C#如何读取这个的二维表,读入到Listview当中。
首先是场景布置,没什么好说的,这也不是本文的重点,就在Form中一个Button一个修改了部分属性的Listview。
主要是如下的双击Button1生成的点击事件,Form1.cs如下:
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.IO;namespace read_txtTable{ public partial class Form1 : Form { char SPLIT_SEPARATOR = ' ';//存放二维表文件的csv或者txt的分隔符 public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { int line_max_count = 0;//计算这个二维表的列最多去到多少 List<List<String>> T = new List<List<String>>();//用于存二维表的容器,就是一个存List的List OpenFileDialog openFileDialog1 = new System.Windows.Forms.OpenFileDialog();//一个打开文件的对话框 openFileDialog1.Filter = "文本文件(*.txt)|*.txt";//设置允许打开的扩展名,你也可以改成csv之类的 if (openFileDialog1.ShowDialog() == DialogResult.OK)//判断是否选择了文件 { StreamReader streamReader = new StreamReader(openFileDialog1.FileName, Encoding.Default);//读取文件的流 while (!streamReader.EndOfStream)//如果没读到最后 { List<String> line = new List<String>(streamReader.ReadLine().Split(SPLIT_SEPARATOR));//每一行根据分隔符形成数组,同时形成List T.Add(line);//T增加这一行 if (line_max_count < line.Count)//此乃求列的最大值算法 { line_max_count = line.Count; } } streamReader.Close(); } //设置listview的表头 for (int i = 0; i < line_max_count; i++) { listView1.Columns.Add("列" + (i + 1), listView1.Width / line_max_count - 1, HorizontalAlignment.Left); } listView1.BeginUpdate();//数据更新,UI暂时挂起,直到EndUpdate绘制控件,可以有效避免闪烁并大大提高加载速度 for (int i = 0; i < T.Count; i++) { List<String> line = T[i]; ListViewItem listViewItem = new ListViewItem(); for (int j = 0; j < line.Count; j++) { if (j == 0) { listViewItem.Text = line[j];//listview的每一行的第一项 } else { listViewItem.SubItems.Add(line[j]);//其余子项 } } listView1.Items.Add(listViewItem);//将这行添加到listview中 } listView1.EndUpdate();//结束数据处理,UI界面一次性绘制。 } }}
你甚至还可以设置一个textBox让用户输入分隔符,不过这样读取二维表的算法一般是自用的。ListView的使用在《【C#】ListView的使用,对Access数据库的增删改查》(点击打开链接)详细说过,这里不再赘述了。主要大家要记住,针对这样的二维表,基本上是设置一个存List的List。因为文件流的读取基本上一行一行地进行,所以在读取的过程中,将一行行用Split('分隔符')的方式,并通过new List()将其打成一个数组,再形成List。同时值得注意的是,C#的Split只能接受char,Java则能接受string和char。
最后上述的txt经过这个程序,运行结果如下所示:
1 0
- 【C#】读取txt、csv等二维表
- 读取txt,csv等文件
- Linux Shell 逐行读取文件 ( txt , sh , csv等)
- Unity跨平台读取文件(txt,csv,xml等)
- 读取.txt .csv文件
- 读取csv.txt文件
- 读取txt写成csv
- 读取文件(.txt、.excel、.csv),在c++、matlab环境中
- python读取txt、csv文件
- Python读取txt、csv文件
- Hive将txt、csv等文本文件导入hive表
- python实现txt/csv的读取和写入txt/csv!
- Python读取文件小结(csv,txt)
- python读取 txt转换成csv
- 加载读取CSV,txt逗号分格值文件
- Tensorflow 读取Txt和Csv格式数据
- 读取csv文件(C#,C++)
- C读取txt教程
- 判断android 是否开启root权限
- Play Store下载应用失败解决
- JMS&MQ,从入门到精通(四)
- sqlServer分页存储过程的调用
- android(自动窗口跳转)-13
- 【C#】读取txt、csv等二维表
- Java继承_隐藏(五)
- jvm 内存结构图
- 两种取url的参数方法
- JavaEE学习笔记--CSS(2)
- 自注册DM(四)CMCC移动DM 实现方法
- java获取服务器的IP及端口
- 零基础学习Java编程语言需要掌握4大知识点
- vim集成环境的搭建