积极答复者
一段读取excel代码,帮忙看看问题出在哪。。

问题
-
下面为什么不进入foreach循环
- C# code
-
public void EcxelToDataGridView(string filePath, DataGridView dgv) { //根据路径打开一个Excel文件并将数据填充到DataSet中 string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " + filePath + ";Extended Properties ='Excel 8.0;HDR=NO;IMEX=1'";//导入时包含Excel中的第一行数据,并且将数字和字符混合的单元格视为文本进行导入 OleDbConnection conn = new OleDbConnection(strConn); conn.Open(); string strExcel = ""; OleDbDataAdapter myCommand = null; DataSet ds = null; strExcel = "select * from [sheet1$]"; myCommand = new OleDbDataAdapter(strExcel, strConn); ds = new DataSet(); myCommand.Fill(ds, "table1"); //根据DataGridView的列构造一个新的DataTable System.Data.DataTable tb = new System.Data.DataTable(); foreach (DataGridViewColumn dgvc in dgv.Columns) { if (dgvc.Visible && dgvc.CellType != typeof(DataGridViewCheckBoxCell)) { DataColumn dc = new DataColumn(); dc.ColumnName = dgvc.DataPropertyName; //dc.DataType = dgvc.ValueType;//若需要限制导入时的数据类型则取消注释,前提是DataGridView必须先绑定一个数据源那怕是空的DataTable tb.Columns.Add(dc); } } //根据Excel的行逐一对上面构造的DataTable的列进行赋值 foreach (DataRow excelRow in ds.Tables[0].Rows) { int i = 0; DataRow dr = tb.NewRow(); //这里的foreach循环不走(问题在这里!!!!) foreach (DataColumn dc in tb.Columns) { dr[dc] = excelRow[i]; i++; } tb.Rows.Add(dr); } //在DataGridView中显示导入的数据 dgv.DataSource = tb;
答案
-
你好!
你的意思是下面循环没有执行吗?你检查一下Columns是否为空?
foreach (DataColumn dc in tb.Columns)
{
dr[dc] = excelRow[i];
i ++ ;
}
周雪峰- 已标记为答案 Jing0Moderator 2010年5月11日 3:26
-
你好 你可以加斷點調試下
同時 你先檢查下你的上層循環有沒有進入呢 即 foreach (DataRow excelRow in ds.Tables[0].Rows)
{
foreach (DataColumn dc in tb.Columns)
這個是要執行的 只要有列
I see you~http://hi.baidu.com/1987raymondMy Blog~~~- 已标记为答案 Jing0Moderator 2010年5月11日 3:26
-
周版主说得对啊——你检查一下Columns是否为空?如果可能,最好把Debug的截图我们瞅瞅,呵呵。
- 已标记为答案 Jing0Moderator 2010年5月11日 3:26
全部回复
-
你好!
你的意思是下面循环没有执行吗?你检查一下Columns是否为空?
foreach (DataColumn dc in tb.Columns)
{
dr[dc] = excelRow[i];
i ++ ;
}
周雪峰- 已标记为答案 Jing0Moderator 2010年5月11日 3:26
-
你好 你可以加斷點調試下
同時 你先檢查下你的上層循環有沒有進入呢 即 foreach (DataRow excelRow in ds.Tables[0].Rows)
{
foreach (DataColumn dc in tb.Columns)
這個是要執行的 只要有列
I see you~http://hi.baidu.com/1987raymondMy Blog~~~- 已标记为答案 Jing0Moderator 2010年5月11日 3:26
-
周版主说得对啊——你检查一下Columns是否为空?如果可能,最好把Debug的截图我们瞅瞅,呵呵。
- 已标记为答案 Jing0Moderator 2010年5月11日 3:26