如何将csv文件中的值与我的listview控件对齐... 我使用的代码中的问题是每个csv值仅在第一列中添加...
这是我的示例listview输出:
第一个" 1234"需要与" asd"但在第二栏" p"
然后是第二个" 1234"需要与" dfg"但在第二栏" p" asd | 1234
dfg | 1234
" |"符号仅代表listview控件中2个值之间的边界...对不起误解..
这是我到目前为止构建的代码......
try
{
string delimiter = ",";
string tablename = "medTable";
DataSet dataset = new DataSet();
OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.Filter = "CSV Files (*.csv)|*.csv|All Files (*.*)|*.*";
openFileDialog1.FilterIndex = 1;
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
if (MessageBox.Show("Are you sure you want to import the data from \n " + openFileDialog1.FileName + "?", "Are you sure?", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
filename = openFileDialog1.FileName;
StreamReader sr = new StreamReader(filename);
string csv = File.ReadAllText(openFileDialog1.FileName);
sr.Close();
String[] strArray = csv.Split(new char[] { ',' });
foreach (string strValue in strArray)
{
listView1.Items.Add(strValue);
}
}
else
{
}
}
}
catch (Exception ek)
{
}
我知道这里有很多大师都非常乐于助人...... 感谢
答案 0 :(得分:0)
尝试用此块替换foreach语句
int i = 0;
string val = string.Empty;
foreach (string strValue in strArray)
{
val += strValue + " ";
i++;
if (i == 2)
{
listView1.Items.Add(val);
i = 0;
val = string.Empty;
}
}
我希望这可以帮到你
修改强> 要添加2列中的项目,如您已发布的图片中所示 请使用此,我希望它工作正常
int i = 0;
ListViewItem item = new ListViewItem();
foreach (string strValue in strArray)
{
i++;
if (i == 1)
{
item = new ListViewItem();
item.Text = strValue;
}
if (i == 2)
{
item.SubItems.Add(strValue);
listView1.Items.Add(item);
i = 0;
}
}
答案 1 :(得分:0)
您想为第二个值创建SubItem
,对吧?确保ListView
有两个Columns
并且在Details
视图中。
listView1.View = View.Details;
listView1.Columns.Add("header1");
listView1.Columns.Add("header2");
虽然我更喜欢设计师这样做..现在你可以填写它:
using System.IO;
//..
var lines = File.ReadAllLines(filename);
foreach (string line in lines)
{
var parts = line.Split(',');
ListViewItem lvi = new ListViewItem(parts[0]);
lvi.SubItems.Add(parts[1]);
listView1.Items.Add(lvi);
}
您可能希望在访问parts数组之前添加错误检查!
关于使用SubItems
集合的说明:当您稍后访问它时,SubItem[1]
是第二列,SubItem[0]
是第一列,您实际上已将其添加为{{ 1}}!
如果您只想将两个值连接起来,那么您可以将我的代码更改为:
Item