Если вы используете CSV, это просто текстовый файл с одной строкой для каждой строки, а столбцы разделяются каким-либо разделителем (например, точкой с запятой).
Таким образом, вы можете прочитать каждую строку и разделить ее разделителем , Затем вы можете выполнить итерацию по каждой строке (= строка Excel) и внутри по разделенному массиву (= столбец / ячейка Excel).
Если это первая строка, вы должны добавить столбец для каждой записи строки в представление списка. Затем для каждой повторяющейся записи вы добавляете элемент в текущий столбец. Вы можете получить доступ к столбцу через индекс, который вы используете во внутренней итерации.
Чтобы получить полное рабочее решение:
public Form1()
{
InitializeComponent();
OpenFileDialog fdlg = new OpenFileDialog();
fdlg.Title = "Excel File Dialog";
fdlg.InitialDirectory = @"c:\";
fdlg.Filter = "Excel .csv (*.csv)|*.csv";
fdlg.FilterIndex = 1;
fdlg.RestoreDirectory = true;
if (fdlg.ShowDialog() == DialogResult.OK)
{
var lines = File.ReadAllLines(fdlg.FileName);
int rowCount = lines.Length;
for (int i = 0; i < rowCount; i++)
{
// split the row into cell values
var cells = lines[i].Split(';');
if (i == 0) // first row -> create column headers
{
for (int j = 0; j < cells.Length; j++)
{
listView.Columns.Add(cells[j]);
}
}
else // not first row -> add values
{
// list view is organized as rows -> create a new row and add first item
var newListViewRow = listView.Items.Add(cells[0]);
// then add the rest of the values as subitems to the listview row
for (int j = 1; j < cells.Length; j++)
{
newListViewRow.SubItems.Add(cells[j]);
}
}
}
}
}
- Лучше переместить код в обработчик события Load.
- Убедитесь, что для свойства
View
представления списка установлено значение Details