C#读取Excel表中的数据时,为何有些行的字段内容读取不到>?
江湖救急!
rt.
C#读取Excel表中的数据时,为何有些行的字段内容读取不到>?
读取方法示例:
string str = "SELECT * FROM [Sheet1$]";
return this.cmd.ExecuteReader();
数据表有14个字段,
测试文件中有三行数据,中间一行的第一列,读取不到字段内容,求救高人
[解决办法]
1、当某列数据中含有混合类型时,在.NET中使用Microsoft.Jet.OLEDB.4.0来读取Excel文件造成数据丢失是不可避免的,要解决这个问题只能考虑采用其它数据读取方法。
2、在.NET中读取Excel文件的另外一种方法是回到使用传统COM组件,但使用COM组件来读取Excel文件数据的效率较低,在作释放的时候有可能碰到不可预知的错误,特别开发Web应用的程序应该慎重使用
3、一种有效的方法可以是,在读取Excel的.xls类型的文本数据之前,先将其转换为.csv格式,在Excel中直接另存为这种格式就可以达到转换的目的。CSV文件又称为逗号分隔的文件,是一种纯文本文件,它以“,”分隔数据列
4、对csv文件不要采用ole db或odbc方法读取,这样还会出现同样问题。要采用普通的读取文本文件的方法打开文件,读取第一行,用“,”作为分隔符获得各字段名,在DataTable中创建对应的各字段,字段的类型可以统一创建成“string”。
参考代码(demo)如下:
String line;
String [] split = null;
DataTable table=new DataTable("auto");
DataRow row=null;
StreamReader sr=new StreamReader("c:/auto.csv",System.Text.Encoding.Default);
//创建与数据源对应的数据列
line = sr.ReadLine();
split=line.Split(',');
foreach(String colname in split){
table.Columns.Add(colname,System.Type.GetType("System.String")); }
//将数据填入数据表
int j=0;
while((line=sr.ReadLine())!=null){
j=0;
row = table.NewRow();
split=line.Split(',');
foreach(String colname in split){
row[j]=colname;
j++;}
table.Rows.Add(row);}
sr.Close();
//显示数据
dataGrid1.DataSource=table.DefaultView;
dataGrid1.DataBind();
[解决办法]
string str = "SELECT * FROM [Sheet1$]";
return this.cmd.ExecuteReader();
你要了解这类访问EXCEL Provider的运行机制.
这种访问方式,provider内部机制回去自动推测判断每列的单元格数据储存类型的.
之所以部分行列的单元格指读取不出来,大部分是因为数据类型的问题.
特别是 同一列有数字,而部分数字储存格式不同,你打开EXCEL就可以看到有绿色的小三角在左上角.
这类读取出来就有可能是空.
[解决办法]
解决了就好~~
[解决办法]
colomtext = workSheet.get_Range(ColNum + "3", Missing.Value).Value2.ToString(); //获取字母列名称
恭喜楼主解决问题,结贴吧。