ASP.Net中实现从Sql Server数据库中导出数据到Excel中

需求分析: 实现按列更新数据后,数据库里就有了汇总数据,为了方便数据进行操作,需要实现从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 

参考内容:

1,Sql 导出 Excel 整数数据精度丢失处理

2,SqlServer中类似concat函数的操作

3,官方文档Excel规范与限制

Guess you like

Origin blog.csdn.net/weixin_40165004/article/details/120227701