小菜最近在做毕设,要求对学生的成绩(Excel表格的形式保存)进行统计,通过种种考虑,觉定把Excel当成数据库来开发,但是,现在碰到一个问题,就是在总成绩一栏中,老师不一定写的是分数,还有可能写“缺考”,“缓考”,“退学”等字眼,但是这些字眼有不只是这3个,老师又不允许修改这些单元格,就是Excel表格里面的信息不能改动,这就会造成统计人数,用AVG数据库语句等会出问题。现在想问问大神有没有什么解决方案,我的意思是有没有除了生成一个临时的EXCEL文件来存放修改掉这些字眼的数据外的其他办法。C#Excel表格统计数据库操作

解决方案 »

  1.   

    不可以读出来后判断是否是数字?EXCEL是能处理很多东西.但是符合你的情况
      

  2.   

    to 2 楼:我也想过用你说的用一个循环,然后对读取的数据进行统计:你看一下我要统计的数据,你会发现如果不直接用SQL的统计语句,而是用上面的方法,代码量很大,带我的老师说:你是学生,代码要尽量简短。所以这个方案被我否决了。
      

  3.   

    我的代码是这样的
    strConn ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " + textBox1.Text + ";Extended Properties='Excel 8.0;HDR=False'";这是连接池的连接语句,
    string sql = "SELECT INT((总评)/10), COUNT(总评) FROM [Sheet1$] GROUP BY INT((总评)/10)";
    这是进行统计的语句,如果把Excel语句中的'总评'这个字段当成字符串来进行操作,然后用Int32.tryParse()试图解析这个对象,能找到就是不是数字的字段,我在2天前就试过了。但是我上面的sql语句就没有用了。如果能修改到数据源的话,这些问题都解决了。但是老师目前的话,不让我动数据源。这是一个伤脑筋的事,从上个礼拜起我就考虑怎么解决,然后在本周2跟老师沟通的时候,我就问能不能动数据源,通过代码遍历Excel该列下非数字的字段,然后相应的修改为-1等值,但是老师目前否决了这个提议。
      

  4.   

    我可以把要统计的数据封装进一个类里面,然后再对读取的数据经行try{}catch{},每次发生异常就将这个类里面对应的成员变量加一。这样对于一下异常既不会影响程序的继续执行又可以继续执行下去了。
      

  5.   

    我也觉得会疯,不过,我想项目经理肯定不会这样分配任务给我吧。
    而且我就是觉得麻烦才发帖,找最佳的解决方案。
    最大的问题是小菜主修的软件测试方向,C#属于可视化编程就是.net编程方向的,小菜现在就类似于边自学,边做啊。