我有一个像这样的csv文件:
george,
nick,
mary,
john,
micheal
用户可以制作他喜欢的文件。所以他可以有4或5或28行。
我有另一个csv文件,我将其分配给名为fileList1的ArrayList。这个文件是一个议程。
如果议程中的名称不在csv 中,则会给出,然后打印一条消息。(这是我需要查找的内容)。关键是csv都可以是动态的。线的数量不是标准的。
我还有一张桌子colB[]
。此表包含将与列进行比较的文件列表。
问题在于我无法在arraylist中选择特定的列,因为它是一个arraylist。
ArrayList fileList1 = new ArrayList();
string stringforData;
private void button1_Click(object sender, EventArgs e)
{
// opens **BROWSE**
string filename = "";
DialogResult result = openFileDialog1.ShowDialog();
if (result == DialogResult.OK)
{
filename = openFileDialog1.FileName;
textBox1.Text = filename;
// Read the file and display it line by line.
string line;
System.IO.StreamReader file1 = new System.IO.StreamReader(textBox1.Text); //reads the path from textbox
stringforData = file1.ReadLine();
while ((line = file1.ReadLine()) != null)
{
// bazei stoixeia mesa ston pinaka
fileList1.Add(line.Split(';'));//split the file and assign it in //the fileList1
}
file1.Close();
}
}
private void button3_Click(object sender, EventArgs e)
{
this.textBox2.Clear();
string[] colB = new string[];
for (int j = 0; j < colB.Length; j++)
{
if (Path.GetExtension(colB[j]) == ".csv")
{
string path = Path.GetDirectoryName(textBox1.Text);
string g = Path.Combine(path, colB[j]);
textBox2.Text += "the path is " + g + " " + Environment.NewLine;
System.IO.StreamReader gi = new System.IO.StreamReader(g);
string itemss;
ArrayList ArrayForLists=new ArrayList();
while ((itemss = gi.ReadLine()) != null)
{
ArrayForLists.AddRange(itemss.Split(';'));// assign to the arraylist the list that we are searching
}
}
答案 0 :(得分:0)
似乎ArrayList不是一个好选项,因为您无法选择所需的列。为什么不使用免费的C#CSV解析器: http://www.filehelpers.com/
从这里找到: CSV parser/reader for C#?
在上面的链接中,还有一个将CSV加载到DataTable中的示例,它提供了引用列的选项(而不是ArrayList)。
编辑: 我已经粘贴了给定链接的代码:
static DataTable CsvToDataTable(string strFileName)
{
DataTable dataTable = new DataTable("DataTable Name");
using (OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0; Data Source = " + Directory.GetCurrentDirectory() + "; Extended Properties = \"Text;HDR=YES;FMT=Delimited\""))
{
conn.Open();
string strQuery = "SELECT * FROM [" + strFileName + "]";
OleDbDataAdapter adapter = new System.Data.OleDb.OleDbDataAdapter(strQuery, conn);
adapter.Fill(dataTable);
}
return dataTable;
}