问题描述
stringstrConn="provider=Microsoft.Jet.OLEDB.4.0;DataSource="+path+";ExtendedProperties="Excel8.0;HDR=YES;IMEX=1"";OleDbConnectionconn=newOleDbConnection(strConn);if(conn.State==ConnectionState.Open)conn.Close();if(conn.State==ConnectionState.Closed)conn.Open();DataTablesheetds=conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,null);DataSetsheetList=reportSheetBLL.GetList("report_type_id="+report_type_id);XmlBuilderxmlbuild=newXmlBuilder(sheetList.Tables[0].Rows.Count);stringtableName="";foreach(DataRowrowinsheetds.Rows){if(row["TABLE_NAME"].ToString().Split('$')[1]==""){if(tableName=="")tableName=row["TABLE_NAME"].ToString();elsetableName+=";"+row["TABLE_NAME"];}}if(tableName!=""){for(intt=0;t<tableName.Split(';').Length;t++){DataSetrelationExcelCellDs=excelBll.getRelationExcelList("Relation_Type_Id="+relation_type_id+"andExcel_Sheet="+(t+1));if(relationExcelCellDs!=null&&relationExcelCellDs.Tables[0].Rows.Count>0){stringstrSheetTableName=tableName.Split(';')[t].ToString();stringsql="SELECT*FROM["+strSheetTableName+"]";OleDbDataAdapterMySource=newOleDbDataAdapter(sql,conn);DataSetexcelds=newDataSet();MySource.Fill(excelds);conn.Close();}}}以上代码在运行到:MySource.Fill(excelds);时就会出错:定义了过多的字段一开始我认为是excel单元格保护的问题,去掉保护,没事了。可当excel有背景颜色的时候也会出现同样的问题。现在是时不时的就会出现,请问这是什么原因造成的,有什么好的办法解决一下吗?
解决方案
解决方案二:
up
解决方案三:
可以用string.Format("SELECT*FROM[{0}${1}]",sheetName,sheetRange);的SQL来限定读取的table可以看下我之前写的一个oledb读excel的类,写了很久了,很多我自己都不记得了http://user.qzone.qq.com/3183601/blog/1
解决方案四:
mark
解决方案五:
读取excelstringopnFileName="D:\dddd.xls";if(File.Exists(opnFileName)==false){return;}stringstrConn="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="+opnFileName+";ExtendedProperties="Excel8.0;HDR=YES;IMEX=1"";OleDbConnectionconn=newOleDbConnection(strConn);stringstrExcel="";OleDbDataAdaptermyCommand=null;DataSetds=newDataSet();strExcel="select*from[sheet1$]";try{conn.Open();myCommand=newOleDbDataAdapter(strExcel,strConn);myCommand.Fill(ds,"dtSource");}catch(Exceptionex){MessageBox.Show("导入出错:"+ex,"错误信息");}finally{conn.Close();conn.Dispose();}
解决方案六:
up
解决方案七:
谢谢大家的答案,可我的做法和你们的是一样的,为什么在单元格受保护或是页面有背景色的时候就会出现:定义了过多的字段我想知道为什么会出现这个错误
解决方案八:
有没有不用OLEDB读取excel的方法,因为.netcompactFramework不支持OLEDB。