2011-07-30 9 views
0

コンボボックスに問題があり、myExcel.xlsファイルにあるデータからデータを取り込もうとしましたが、実際の値ではなくSystem.Data.DataRowViewがコンボボックスに表示されています。ここに私のコードです:ComboBoxは実際の値ではなくDataRowViewを表示します

Application excelApp = new ApplicationClass(); 
string strWB = "myExcel.xls"; 
string strWBPath = "D:\\TEMP\\"; 

// Opening Excel file 
Workbook workbook = excelApp.Workbooks.Open(strWBPath + strWB, 0, true, 5, "", "", true, XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0); 

Worksheet worksheet = (Worksheet)workbook.Sheets.get_Item(1); 
Range range = worksheet.UsedRange; 

int column = 0; 
int row = 0; 

DataTable dt = new DataTable(); 
dt.Columns.Add("Agent Name"); 

for (row = 2; row <= range.Rows.Count; row++) 
{ 
    DataRow dr = dt.NewRow(); 
    for (column = 1; column <= range.Columns.Count; column++) 
    { 
     dr[column - 1] = (range.Cells[row, column] as Range).Value2.ToString(); 
    } 
    dt.Rows.Add(dr); 
} 
workbook.Close(true, null, null); 
excelApp.Quit(); 

// dataGridView1.DataSource = dt; 

comboBox1.DisplayMember = "FirstName"; 
comboBox1.ValueMember = "Sheet1"; 
comboBox1.DataSource = dt; 
+0

、そのはまだSystem.Data.DataRowViewを示すパスとファイル名の連結 – abatishchev

答えて

1

値2はオブジェクトです。したがって、ToStringは値ではなく名前であるデフォルトを返します。 ".ToString"ではなく "as string"を使用してみてください。

+0

を含む 'System.IO.Path.Combine()'だけではなく、文字列を使用します。何かのように –

0

代わりにcomboBox1.DataSourceをリストにバインドしない理由はありますか?

ところで
dt.AsEnumerable().Select(x => x["FirstName"].ToString()).ToList(); 
関連する問題