我要將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