excel表中只有几行数据,但是C#读出来有5366行是怎么回事啊

kearney_giser 2016-08-14 11:09:10
...全文
290 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
kearney_giser 2016-08-16
  • 打赏
  • 举报
回复
引用 2 楼 From_TaiWan 的回复:
是不是有的行,保存了空格,你将excel表没内容的行删除,注意:删除行,不是删除内容
private bool hangNull(DataRow ds)//判断是否是空行
        {
            //判断每个单元格为空
            //一行中所有单元格为空
            //返回

            int a=0;
            for (int i = 0; i < ds.ItemArray.Length;i++ )
            {
                if (ds[i].ToString ().Trim ()== "")
                    a++;
            }
            if (a == ds.ItemArray.Length)
                return true;
            else
                return false;
        }
        private int IsNotNullhangshu(System.Data.DataTable ds)//统计非空行数
        {            
            //读表的每一行
            //判断非空行
            //如果行非空则计数,如果空行返回
            int b=0;           
            for (int i = 3; i < ds.Rows.Count;i++ )           
            {
                bool kong = hangNull(ds.Rows [i]);
                if (kong == false)
                    b++;
                else
                    return b+3;
            }
                return b+3;            
        }
是的后来确定是空行导致的,写了个判断空行的函数来处理。表格中好像,Excel列设定了公式,单元格设置了比如性别:男、女的限定条件,具体是怎么产生的呢?在Excel中怎么去掉
dream__life 2016-08-15
  • 打赏
  • 举报
回复
引用 2 楼 From_TaiWan 的回复:
是不是有的行,保存了空格,你将excel表没内容的行删除,注意:删除行,不是删除内容
2楼正解,检查excel文件,有空行
zbdzjx 2016-08-15
  • 打赏
  • 举报
回复
之前试过用com组件、NPOI方式读Excel,经常会遇到,自动判断的记录行数与实际不相符,基本上都是多于实际数。 所以,不能简单的用自动判断出来的行数,而是要再用for循环判断一下,只要其中的某几格为空,就认为这行为空。
荣蓝科创 2016-08-15
  • 打赏
  • 举报
回复
有空行,有数据的下一行往下一直到5366行全部删掉,应该就可以了。
秋的红果实 2016-08-14
  • 打赏
  • 举报
回复
是不是有的行,保存了空格,你将excel表没内容的行删除,注意:删除行,不是删除内容
xuzuning 2016-08-14
  • 打赏
  • 举报
回复
应该是光标停在 xls 文件中的 5366 行处了

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧