需求分析: 实现按列更新数据后,数据库里就有了汇总数据,为了方便数据进行操作,需要实现从SqlServer数据库中将汇总数据导出到Excel中。
主要遇到的问题: 在实现过程中主要遇到了以下两个问题,分别是:
1,下载完成的Excel数据不完整,因为GridView中进行了分页显示;
2,数据库中有一列数据16位,导出到Excel中,丢失了最后一位都显示成了0;
1,解决分页显示下载数据仅当前页的问题
思想其实很简单,就是在业务处理过程中,现将分页和排序清除掉。语句如下:
GridView1.AllowPaging = false; //清除分页
GridView1.AllowSorting = false; //清除排序
然后绑定相应的数据源。进行业务处理,处理完之后,别忘记进行恢复分页、排序并再次绑定。
GridView1.AllowSorting = true; //恢复分页
GridView1.AllowPaging = true; //恢复排序
bindGridView1(); //再次绑定
2,解决从数据库中导出到Excel数据丢失的问题
从Excel官方文档中,可以看到Excel的规范与限制:
单元格数字最大精度是15位,而业务需求的字段长度为16位,因此导致最后一位精度丢失成为了0
分析过后尝试对目标字段进行转义,参考Excel中对位数长的数据的操作,添加'即可变为文本类型。在数据库中,如果是oracle和MySQL的话,使用concat 对查询语句的处理如下:
elect *, concat("\t", id) as id from test;
Sql Sever中的方式有所差别,直接使用“+”拼接内容,处理如下
SELECT ''''+ id as id FROM test_table_name
参考内容: