c# - 如何拆分 CSV 文件
问题描述
"0.0.0.0,""0.255.255.255"",""ZZ"""
"1.0.0.0,""1.0.0.255"",""AU"""
"1.0.1.0,""1.0.3.255"",""CN"""
"1.0.4.0,""1.0.7.255"",""AU"""
"1.0.8.0,""1.0.15.255"",""CN"""
"1.0.16.0,""1.0.31.255"",""JP"""
"1.0.32.0,""1.0.63.255"",""CN"""
"1.0.64.0,""1.0.127.255"",""JP"""
"1.0.128.0,""1.0.255.255"",""TH"""
"1.1.0.0,""1.1.0.255"",""CN"""
"1.1.1.0,""1.1.1.255"",""AU"""
"1.1.2.0,""1.1.63.255"",""CN"""
"1.1.64.0,""1.1.127.255"",""JP"""
"1.1.128.0,""1.1.255.255"",""TH"""
优秀
0.0.0.0,"0.255.255.255","ZZ"
1.0.0.0,"1.0.0.255","AU"
1.0.1.0,"1.0.3.255","CN"
1.0.4.0,"1.0.7.255","AU"
1.0.8.0,"1.0.15.255","CN"
1.0.16.0,"1.0.31.255","JP"
1.0.32.0,"1.0.63.255","CN"
1.0.64.0,"1.0.127.255","JP"
1.0.128.0,"1.0.255.255","TH"
1.1.0.0,"1.1.0.255","CN"
1.1.1.0,"1.1.1.255","AU"
1.1.2.0,"1.1.63.255","CN"
1.1.64.0,"1.1.127.255","JP"
1.1.128.0,"1.1.255.255","TH"
1.2.0.0,"1.2.2.255","CN"
1.2.3.0,"1.2.3.255","AU"
1.2.4.0,"1.2.127.255","CN"
1.2.128.0,"1.2.255.255","TH"
1.3.0.0,"1.3.255.255","CN"
1.4.0.0,"1.4.0.255","AU"
1.4.1.0,"1.4.127.255","CN"
1.4.128.0,"1.4.255.255","TH"
如何拆分此 CSV 文件。
例如0.0.0.0 0.255.255.255 ZZ
对于第一行以及如何使用 3columns 添加 datagridview
解决方案
一个CSV
文件要么是一个文件,要么是Tab delimited
一个Comma delimited
文件。那就是说;delimiter
您必须逐行读取文件,然后根据字符分隔一行中可用的值。通常出现在CSV
文件中的第一行通常是标题,您可以使用这些标题来生成一KeyValue
对以使您的收藏更有效率。例如:
Dictionary<int, Dictionary<String, String>> values = new Dictionary<int, Dictionary<String,String>>();
using(FileStream fileStream = new FileStream(@"D:\MyCSV.csv", FileMode.Open, FileAccess.Read, FileShare.Read)) {
using(StreamReader streamReader = new StreamReader(fileStream)){
//You can skip this line if there is no header
// Then instead of Dictionary<String,String> you use List<String>
var headers = streamReader.ReadLine().Split(',');
String line = null;
int lineNumber = 1;
while(!streamReader.EndOfStream){
line = streamReader.ReadLine().split(',');
if(line.Length == headers.Length){
var temp = new Dictionary<String, String>();
for(int i = 0; i < headers.Length; i++){
// You can remove '"' character by line[i].Replace("\"", "") or through using the Substring method
temp.Add(headers[i], line[i]);
}
values.Add(lineNumber, temp);
}
lineNumber++;
}
}
如果你的数据结构CSV
是不变的,以后不会改变,你可以开发一个强类型的数据模型,去掉Dictionary
类型。这种方法将更加优雅和高效。
推荐阅读
- php - MPDF - “自动”字体大小文本区域
- angularjs - Safari 中的 Hammerjs:滚动问题
- django - 如何部分使用序列化程序
- ajax - Select2 动态选择 AJAX
- javascript - 如何获取数组中数组的长度?
- http - http2 中的 half close 有什么作用?http2中流状态的本地和远程之间的区别是什么?
- javascript - Laravel多行输入/选择下拉菜单时自动填写一行文本框字段
- r - 在 R 中,如何在语句末尾(句号)而不是在句子之间的 .(点)处拆分文本/段落
- c# - 尝试通过 VSTO 将 Action 作为参数传递给 COM 方法时出现 System.ArgumentException
- php - 提交一个表单导致提交另一个表单:页面中的 3 个 Html 表单