2016-09-30 74 views
2

我正在閱讀一個excel文件,並將其張貼到一個名稱(它始終位於Excel表格的第一列)的listBox(employeeBox)中。然後,我想要在列表框中選擇名稱後刪除該名稱。我的FIRST和MAIN問題是它不會加載列表框中的名字。當我調試它時,它甚至看起來沒有加載Excel讀取。我已經把代碼放在按鈕中,並且加載正常。任何人都可以協助這是我的第一篇文章。因此,如果對如何提出問題有任何建議,請告訴我。 P.S.代碼被設置爲獲取單元格的值。不是名稱。讀取excel表格,並在讀取後添加到列表框中。 C#

private void Form3_Load(object sender, EventArgs e) 
{ 
    Excel.Application xlexcel = new Excel.Application(); 
    xlexcel.Visible = true; 
    string fileName = "C:\\MyExcel.xlsx"; 
    Excel.Workbook xlWorkBook = xlexcel.Workbooks.Open(fileName, Type.Missing, Type.Missing, Type.Missing, 
    Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
    Type.Missing, Type.Missing, Type.Missing, Type.Missing); 
    Excel.Worksheet xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets[1]; 

    Excel.Range usedRange = xlWorkSheet.UsedRange; 
     string data = ""; 
     Excel.Range curRange; 
     List<string> itemsToAdd = new List<string>(); 

     try 
     { 
      foreach (Excel.Range row in usedRange.Rows) 
      { 
       curRange = (Excel.Range)row.Cells[1, 1]; 
       data = curRange.Cells.Value.ToString(); 
       itemsToAdd.Add(data); 
       xlWorkBook.Close(); 
       xlexcel.Quit(); 
      } 
      employeeBox.DataSource = itemsToAdd; 
     } 
     catch(Exception) 
     { 
      Console.WriteLine(); 
     } 
} 

private void employeeBox_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    employeeBox.Click += employeeBox_Click; 
} 

private void employeeBox_Click(object sender, EventArgs e) 
{ 
    throw new NotImplementedException(); 
}  

作出適當修正後,這是給我一個RuntimeException。這促使我使用嘗試捕捉..這帶走了錯誤,但它仍然沒有增加。它顯示了MessageBox,但沒有添加到列表框中。現在..我嘗試了一下,發現它在關閉excel時添加了,但它只增加了一件事。

enter image description here enter image description here

+0

你在哪裏添加名稱到列表框? – Magnetron

+0

@Magnetron我還沒有得到這個。它應該只是讀取細胞的價值,但它甚至沒有這樣做。 –

+0

有何建議? @Magnetron –

回答

2

這應該工作到環通數據每行和每列從獲得價值1

Range usedRange = xlWorkSheet.UsedRange; 
string data = ""; 
Excel.Range curRange; 
List<string> itemsToAdd = new List<string>(); 
foreach (Excel.Range row in usedRange.Rows) 
{ 
    curRange = (Excel.Range)row.Cells[1, 1]; 
    if (curRange.Cells.Value2 != null) 
    { 
    data = curRange.Cells.Value2.ToString(); 
    itemsToAdd.Add(data); 
    } 
} 
listBox1.DataSource = itemsToAdd; 
xlWorkBook.Close(false, System.Reflection.Missing.Value, System.Reflection.Missing.Value); 
xlexcel.Quit(); 

更新到忽略空白行 - 當usedRange返回...它可能如果數據不在連續的行中,請包含空行。

希望這會有所幫助!

+0

編譯好..不給消息框。@JohnG –

+0

@我只是一個有趣的編碼器......我更新了代碼以包括將這些項目放入列表框中......我沒有在您的原始代碼中看到您正在執行此操作的位置。 – JohnG

+0

這會導致另一個問題。我會更新它。 –