作者don750421 (1+1≠2)
看板C_Sharp
标题[问题] 读取Excel档并用listBox显示
时间Tue Nov 15 23:24:44 2011
我要将Excel档的资料读取到Listbox内
Excel档的第二栏为IP位址(假设为127.0.0.1~127.0.0.30)共30笔
那我要把这些IP位址抓进Listbox内,我的写法如下...
我是用 using System.Data.OleDb; 的方式
连结那部份就省略了...
try
{
DataSet ds = new DataSet();
DataTable dt =
Conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null,
null, "TABLE" });
if (dt.Rows[0]["TABLE_Name"].ToString().IndexOf("$") < 0)
{
dt.Rows[0]["TABLE_Name"] += "$";
}
string strSelect = "Select * From [" +
dt.Rows[0]["TABLE_Name"].ToString() + "] ";
OleDbDataAdapter da = new OleDbDataAdapter(strSelect,
strConn);
//MessageBox.Show(dt.Rows[0]["TABLE_Name"].ToString()); // 显
示 Excel工作表
da.Fill(ds, dt.Rows[0]["TABLE_Name"].ToString()); //将 Excel
工作表丢入ds 资料库
da.Dispose(); //清除快取资源
ds.Tables[dt.Rows[0]["TABLE_Name"].ToString()].Rows.RemoveAt(0);
//dataGridView1.DataSource =
ds.Tables[dt.Rows[0]["TABLE_Name"].ToString()]; //显示资料库内的资料
→ listBox1.DataSource = ds.Tables[0];
→ listBox1.Text = listBox1.SelectedItem.ToString();
→ listBox1.DisplayMember = "IP_Group1";
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
Conn.Close();
Conn.Dispose();
}
但是,问题发生了,就是Listbox下方会有多余的空白,
我个人推想是因为一并连同Excel档没资料的栏也一并抓入的关系
但是,我想写一个判断栏位有没有资料的办法
也就是在Listbox的地方加个判断(如上方箭头处→)
我的判断写法如下
for (int i=0;i<ds.Tables.Count-1;i++)
{
listBox1.DataSource = ds.Tables[i];
listBox1.Text = listBox1.SelectedItem.ToString();
listBox1.DisplayMember = "IP_Group1";
}
但是,用这种方法判断结果还是一样,Listbox下方仍有很多空白
请问各位我有哪里需要修改呢?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.47.24.180