我正在尝试将我的CSV文件导出到ListView。
ListView看起来像这样:
http://screenshooter.net/7827870/vrwwokd
我设法导出csv文件,但它将所有内容放在“名称”列中。
private void toolStripButton1_Click(object sender, EventArgs e)
{
using (OpenFileDialog openFileDialog1 = new OpenFileDialog())
try
{
openFileDialog1.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
openFileDialog1.DefaultExt = "csv";
openFileDialog1.Title = "Open file";
openFileDialog1.Filter = "CSV (*.csv)|*.csv";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
FileStream srcFS;
srcFS = new FileStream(openFileDialog1.FileName, FileMode.Open);
StreamReader srcSR = new StreamReader(srcFS,System.Text.Encoding.Default);
do
{
string ins = srcSR.ReadLine();
ListViewItem lvi = new ListViewItem();
lvi.SubItems.Add(ins);
if (ins != null) listView1.Items.Add(lvi);
else break;
} while (true);
srcSR.Close();
}
}
catch (Exception errorMsg)
{
MessageBox.Show(errorMsg.Message,"Error reading a file",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}
任何人都有线索? :)
现在看起来如何:
using (OpenFileDialog openFileDialog1 = new OpenFileDialog())
try
{
openFileDialog1.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
openFileDialog1.DefaultExt = "csv";
openFileDialog1.Title = "Open file";
openFileDialog1.Filter = "CSV (*.csv)|*.csv";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
FileStream srcFS;
srcFS = new FileStream(openFileDialog1.FileName, FileMode.Open);
StreamReader srcSR = new StreamReader(srcFS,System.Text.Encoding.Default);
do
{
string ins = srcSR.ReadLine();
string[] columns = ins.Split(',');
ListViewItem lvi = new ListViewItem(columns[0]);
lvi.SubItems.Add(ins);
for (int i = 1; i < columns.Count(); i++)
{
lvi.SubItems.Add(columns[i]);
}
listView1.Items.Add(lvi);
} while (true);
srcSR.Close();
}
}
catch (Exception errorMsg)
{
MessageBox.Show(errorMsg.Message,"Error reading a file",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
答案 0 :(得分:1)
此时您将整行添加为listviewitem。 首先,您需要将行拆分为列:
string[] columns = ins.Split(';');
然后使用第一列创建listviewitem。
ListViewItem lvi = new ListViewItem(columns[0]);
然后遍历剩下的并为每列添加一个子项:
for (int i = 1; i< columns.Count(); i++)
{
lvi.SubItems.Add(columns[i]);
}
最后将listviewitem添加到listview
listView1.Items.Add(lvi);