我正在使用C#将CSV文件导入我的应用程序
目前我有1个字段的CSV文件。它工作得很好,但现在我想在同一个应用程序中添加一个3字段的CSV文件。
将数据存储到List后,我将其绑定到DataGridView
这是我写的相关代码。如果您发现任何不属于我的问题但可能有问题的问题,请随时大声说出来。我总是希望学习和改进我的代码。
BindingList<StringValue> data = new BindingList<StringValue>();
private void importExcelFile()
{
TextFieldParser parser = new TextFieldParser(fileName);
parser.TextFieldType = FieldType.Delimited;
parser.SetDelimiters(",");
while (!parser.EndOfData)
{
//Processing row
string[] fields = parser.ReadFields();
foreach (string field in fields)
{
StringValue s = new StringValue(field);
// Issue is here. It adds it to a single dimension array. What can I do to make it multi-dimension?
data.Add(s);
}
}
parser.Close();
}
private void OnBackgroundWorkerDoWork(object sender, DoWorkEventArgs e)
{
importExcelFile();
}
private void OnBackgroundWorkerRunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
dataGridView1.DataSource = data;
dataGridView1.Columns[1].Name = "URL";
dataGridView1.Columns[1].HeaderText = "URL";
dataGridView1.Columns[1].Width = 300;
dataGridView1.Columns[1].ReadOnly = true;
dataGridView1.AutoResizeColumns();
toolStripStatusLabel1.Text = dataGridView1.RowCount.ToString() + " Number Of Websites";
}
class StringValue
{
string day, time, url;
public StringValue(string s)
{
_value = s;
}
public StringValue(string[] s)
{
day = s[0];
time = s[1];
url = s[2];
}
public string Value { get { return _value; } set { _value = value; } }
string _value;
}
我想我应该修改我的StringValue类来保存我从CSV文件导入的多个字段。我不确定如何修改Value部分以返回我将其绑定到dataGridView时所需的数据
感谢您的输入和帮助/
答案 0 :(得分:1)
为什么不将jste放入像这样的数据表?
private DataTable GetDataTableFromCsv(string path)
{
DataTable dataTable = new DataTable();
String[] csv = File.ReadAllLines(path);
foreach (string csvrow in csv)
{
var fields = csvrow.Split(','); // csv delimiter
var row = dataTable.NewRow();
row.ItemArray = fields;
dataTable.Rows.Add(row);
}
return dataTable;
}
之后,juste将数据表导入数据网格视图。
答案 1 :(得分:1)
在您的实体(StringValue)中,您可以根据需要添加任意数量的属性,包含所需数量的值。
您可以通过将DataPropertyName列设置为要绑定的属性的名称来绑定dataGridView的每一列。
例如,您的实体有两个属性:
class MyValues
{
public string FirstName {get;set;}
public string LastName {get;set;}
}
您可以将此集合添加到yuur数据集合中,并将其绑定到网格。
您的网格可以配置为:
dataGridView1.Columns[0].Name = "FirstName";
dataGridView1.Columns[0].HeaderText = "FirstName";
dataGridView1.Columns[0].DataPropertyName = "FirstName";
dataGridView1.Columns[1].Name = "LastName";
dataGridView1.Columns[1].HeaderText = "LastName";
dataGridView1.Columns[1].DataPropertyName = "LastName";