有什麼方法可以將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. 閱讀csv文件
- 2. 閱讀XML與閱讀CSV文件java
- 3. 閱讀CSV文件中使用C#
- 4. 閱讀csv Oldb c#
- 5. 閱讀大型csv文件
- 6. 閱讀大型CSV文件
- 7. 的iOS閱讀csv文件
- 8. 問題閱讀csv文件
- 9. python閱讀csv文件
- 10. 閱讀CSV文件時NumberFormatException
- 11. 閱讀CSV文件的LINQ
- 12. 熊貓閱讀.csv文件
- 13. 閱讀並同csv文件
- 14. 閱讀CSV文件WinPython
- 15. 閱讀CSV文件在PHP
- 16. 閱讀csv文件延遲
- 17. 如何閱讀.csv文件?
- 18. C#閱讀文本文件
- 19. 閱讀文本文件 - C++
- 20. C閱讀文本文件
- 21. 閱讀文本文件C#
- 22. 閱讀文本文件C
- 23. 閱讀文本文件C++
- 24. 閱讀多列csv閱讀
- 25. Python的csv閱讀器不斷閱讀相同的文件
- 26. 閱讀csv文件的問題
- 27. 閱讀CSV文件,並創建字典
- 28. 如何在Spyder的閱讀CSV文件
- 29. 閱讀CSV文件小寫與Python
- 30. 的Python:argparse閱讀CSV文件的功能
你的矩陣是什麼意思? UI中的網格?如果是的話,哪個UI框架?如果不是,什麼類型的數據結構? – 2010-08-18 06:57:21
@詹姆斯 - 我想他是指矩陣格式的數組。 'string [,]' – 2010-08-18 06:59:58
對!只是我想要一個int矩陣,但鑄造不是一個問題在這裏...... – aharon 2010-08-18 07:25:16