有什么方法可以将csv文件读入矩阵,因此文件中的每个正方形都将是矩阵中的单元格?阅读csv文件c#
1
A
回答
3
有许多开源CSV阅读器,它也很容易编码你自己的。
一开始采取看看codeplex.com: http://kbcsv.codeplex.com/
或者CodeProject上的教程: http://www.codeproject.com/KB/database/CsvReader.aspx
完成的缘故,这里是我自己的实用类阅读从CSV文件一行:
/// <summary>
/// Defines CSV reader states
/// </summary>
enum State
{
Initial,
Quote,
Data,
NestedQuote
}
/// <summary>
/// Initializes a new instance of the <see cref="CsvReader"/> class.
/// </summary>
/// <param name="inputStream">The input stream.</param>
public CsvReader(Stream inputStream)
{
if (inputStream == null)
throw new ArgumentNullException("inputStream");
reader = new StreamReader(inputStream);
}
/// <summary>
/// Reads a single line of CSV data.
/// </summary>
/// <returns>Array of CSV fields</returns>
public string[] Read()
{
var line = reader.ReadLine();
var retval = new List<string>();
if (line == null)
return null;
var state = State.Initial;
var text = new StringBuilder();
foreach (var ch in line)
switch (state)
{
case State.Initial:
if (ch == '"')
state = State.Quote;
else if (ch == ',')
retval.Add(string.Empty);
else
{
text.Append(ch);
state = State.Data;
}
break;
case State.Data:
if (ch == ',')
{
retval.Add(text.ToString());
text.Length = 0;
state = State.Initial;
}
else
text.Append(ch);
break;
case State.Quote:
if (ch == '"')
state = State.NestedQuote;
else
text.Append(ch);
break;
case State.NestedQuote:
if (ch == '"')
{
text.Append('"');
state = State.Quote;
break;
}
state = State.Data;
goto case State.Data;
}
retval.Add(text.ToString());
return retval.ToArray();
}
/// <summary>
/// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
/// </summary>
public void Dispose()
{
reader.Dispose();
}
为了使矩阵(未测试):
var data = new List<string[]>();
string[] line;
using(reader = new CsvReader(stream))
while((line = reader.Read()) != null)
data.Add(line);
result = data.Select(row => row.Select(cell => int.Parse(cell)).ToArray()).ToArray();
0
有很多方法。从逐字节读取器开始。这取决于你的CSV文件格式(有/无头,行尾“或“),我写我自己的类
一个好的读者开始:。
2
有在VisualBasic中命名空间的文本阅读器,可以在C#中使用和处理甚至可怕的CSV文件时效果很好。
只是在你的项目中添加引用Microsoft.VisualBasic
1
CSV使用正则表达式解析:http://www.hotblue.com/article0000.aspx?a=0006
扩大与自定义分隔的概念,看到这个帖子:How do I write a regex to match a string that doesn't contain a word?
相关问题
- 1. 阅读XML与阅读CSV文件java
- 2. 阅读csv Oldb c#
- 3. 熊猫阅读.csv文件
- 4. 的iOS阅读csv文件
- 5. 阅读大型CSV文件
- 6. 阅读大型csv文件
- 7. 阅读CSV文件WinPython
- 8. 问题阅读csv文件
- 9. 阅读并同csv文件
- 10. 如何阅读.csv文件?
- 11. C阅读文本文件
- 12. PHP阅读CSV文件的问题
- 13. 阅读CSV文件,并生成字典
- 14. 阅读CSV文件,并创建字典
- 15. 阅读csv文件时遇到问题
- 16. Python。如何阅读多个.csv文件?
- 17. 阅读.csv ANSI文件并写入mysql
- 18. 阅读CSV文件中的JavaScript
- 19. Python阅读列中的csv文件?
- 20. 如何阅读CSV数据文件?
- 21. 阅读CSV文件并创建字典?
- 22. 阅读csv文件问题python
- 23. 阅读服务器端CSV文件
- 24. 阅读csv文件与filehelpers错误
- 25. CSV文件在Python中阅读
- 26. 阅读csv文件的python错误
- 27. 阅读CSV文件中的所有列?
- 28. 如何阅读大的CSV文件?
- 29. 阅读csv文件列中的异常
- 30. 如何在Spyder的阅读CSV文件
你的矩阵是什么意思? UI中的网格?如果是的话,哪个UI框架?如果不是,什么类型的数据结构? – 2010-08-18 06:57:21
@詹姆斯 - 我想他是指矩阵格式的数组。 'string [,]' – 2010-08-18 06:59:58
对!只是我想要一个int矩阵,但铸造不是一个问题在这里...... – aharon 2010-08-18 07:25:16