翻看过前面的一些帖子,用c#读取excel文件大都是指读取规则的excel表格文件.
也就是固定多少列.现在手头有一个excel文件,格式是不固定的.
大多数行由"姓名    年龄    性别    单位"组成
但是还有一些行是为了编辑的方便插入了只有1列的一些信息..
总的来说是这个样子的:黑龙江大力公司
填报时间:  2005-7-8
张三   25   男   黑龙江大力公司
李四   24   女   黑龙江大力公司
赵五   21   男   黑龙江大力公司
广东宏远集团
填报时间:  2005-7-8
丁六   25   男   广东宏远集团
郭七   24   女   广东宏远集团
王八   21   男   广东宏远集团
请问这种情况我怎么能够读取到所有的有效记录,这里我只想读取"姓名    年龄    性别    单位"
这些格式的数据,也就是自动分析过滤掉不合理的数据,最后得到这样的数据集合..张三   25   男   黑龙江大力公司
李四   24   女   黑龙江大力公司
赵五   21   男   黑龙江大力公司
丁六   25   男   广东宏远集团
郭七   24   女   广东宏远集团
王八   21   男   广东宏远集团
要求用c#实现..读取以上不规则的Excel文件得到规则的数据集合信息.
请各位路过的时候提点一下小弟,谢谢....
如果解决了要多少分都给,反正还有好几千分.呵呵...

解决方案 »

  1.   

    SELECT * FROM table1 WHERE F2>0
      

  2.   

    SELECT * FROM table1 WHERE F2>0
    楼上的?
    F2代表什么意思?能不能判定Excel的每一行有多少个cell??
    观察了一下,之所以会出现格式不统一,主要是某一些行的单元格合并了。
    例如字段  A  B   C   D
    如果合并了 ABC的话那么那一行就剩下 A   D两个字段了。
      

  3.   

    如果ABC被合并,那么 Range[ABC].Text 就是 A.Text
      

  4.   

    不规则格式的.xls文件只能调用Excel类库来处理:
      

  5.   

    SELECT * FROM table1 WHERE F2>0
    楼上的, F2代表什么意思?
    -----------------------------------------
    如果在数据库连接串中是 Extended Properties="Excel 8.0;HDR=No;" 指明无标题行的话,
    缺省的列名就是 F1, F2, F3, ...,  所以 F2 就表示第2列.当然, 如果是有标题行, 就用如下 SQL 语句好了:
    SELECT * FROM table1 WHERE 年龄>0因为你的 Excel 表中如下的行广东宏远集团
    填报时间:  2005-7-8只占用第一列, 那么第2列必然是 null 或 0, 总之不会大于0, 用 WHERE F2>0 就可以把这些行给过滤了.
      

  6.   

    忘记说了, 读取 Excel 的工作簿, table1 应该写成 [Sheet1$] 之类的格式:
    SELECT * FROM [Sheet1$] WHERE F2>0