依据SZW朋友的提醒:本文所说的Excel文件指.xls文件,不包括Excel2007的默认保存文档格式.
大量数据导出到Excel文件,一般情况有以下三个麻烦:
1.导出的执行速度要比较快,否则有http请求超时的问题;
当然如果您是使用winForm方式就不在此列。
2.Excel文件有最多65535行数据的限制;
3.数字会有格式变成指数方式的麻烦;
比如身份证号码,以数字方式保存后,信息末几位有丢失的情况。
解决思路:
1.使用oledb,把excel文件当作数据库处理,效率相对其他五花八门的导出方案来说,算比较高的。虽然不是最高的,但得到的excel文件是真正的二进制Excel文件,如果用户好要把导出的数据整理后导回到系统,那么恭喜了,这种方法是你最好的选择。
2.每个sheet最多最多65535行数据,但一个文件可以有很多个sheet文件,如果您要导出的数据超过65535个,那么需要设法把多余的数据放到第二、三....个sheet中去。
3.一个sheet我们可以看作是一个数据库的表,那么我们是不是可以通过定义表的字段的数据属性来保证数据的正确格式呢?
关键代码:
备注:完整的代码是偶写的工程代码,版权所有的。但大家可以根据我的思路和关键代码的提示自己完成想要的功能,呵呵
代码片段一 sheet创建:
//生成创建表的脚本
StringBuilder sb = new StringBuilder();
sb.Append("CREATE TABLE ");
sb.Append("[" + tableName + "] ( ");
for (int i = 0; i < headers.Length; i++)
{
string datatype;
switch (dt.Columns[columns[i]].DataType.Name.ToLower())
{
case "float": datatype = "float"; break;
case "int32": datatype = "int"; break;
case "double": datatype = "double"; break;
case "decimal": datatype = "float"; break;
default: datatype = "text"; break;
}
if (i < headers.Length - 1)
{
sb.Append(string.Format("[{0}] {1},", headers[i], datatype));
}
else
{
sb.Append(string.Format("[{0}] {1})", headers[i], datatype));
}
}
return sb.ToString();
大家看到了把,我们可以使用create语句创建sheet。我们使用的表的名称,将变成sheet名称。
建议大家导出的名称可以这样依次起:比如产品信息数据,表名可以分别叫 产品信息(第1页)、产品信息(第2页)等等。
代码片段二 按照需要自动创建多个sheet:
for (int i = 0; i < dt.Rows.Count; i++)
{
//创建sheet
if (i % 65535 == 0)
{
tableName = string.Format("{0}Page{1}", dt.TableName, (i / 65535) + 1);
objCmd.CommandText = GetCreateSheetSQL(dt, headers, columns, tableName);
objCmd.ExecuteNonQuery();
}
插入语句#region 插入语句
sb.Append("INSERT INTO ");
sb.Append("[" + tableName + "] ( ");
.
最后提醒大家:excel作为数据库的时候,是可以支持事务处理的哦,大家别忘了使用事务机制。
如果大家处理的数据量比较小,要求的格式非常复杂,比如多重表头,有统计图形等,那么请使用其他的excel导出方法。本解决方法适用范围前面已经说过了,请大家参考。
http://piedpiper.cnblogs.com
本文是偶原创,想转贴的朋友劳驾写明转贴二字。呵呵
分享到:
相关推荐
C#,asp.net 简单明了的导出Excel! 只要几行代码,只要引用到一个类,即可导出你要导出的数据,不用用代码一行行编译导出excel格式,我这里都帮你封装好了,只要你链接数据库,读出表,导出excel,就又你要的数据了...
,这是一个ASP.NET WEB测试代码,数据库为access,把Access中的内容导出到Excel文件中,并保持数据格式不变,测试时请在ASP.NET3.5环境以上进行,数据库文件路径请修改Web.config文件。使用说明: 1.先将本目录下...
asp.net数据库中导出excel表,excel表数据导入到数据库中,这两个应用的完整实例代码,把相应的数据库连接该一下就可以用,基于C#。
ASP.NET中把Gridview导出为EXCEL,解决中文乱码问题,详情请看视频
ASP.NET导出Excel乱码的终极解决方案
比较基础,适合初学者。用asp.net c#语言实现导入导出EXCEL
导出Excel案例. asp.net c#导出Excel案例. asp.net c#
落阳-利用NPOI将EasyuiDatagrid数据导出到Excel-ASP.NET MVC Demo
c#、asp.net 中将数据导出成word或者excel文件的控件 直接可以拖到界面 与自己的数据控件绑定 以及设置导出的类型就可以了
ASP.NET(C#)导入&导出Excel
asp.net导出EXCEL,把Excel文件当做一个数据源来进行数据的读取操作。
ASP.NET导入导出excel文件数据,可以实现03和07版的excel文件的导入导出
asp.net导出数据到excel,试过最多可以导出20w条记录。
简单,易懂的ASP.NET Core NPOI导出复杂Word、Excel和Excel数据导入示例讲解
服务器不需要安装 Office,导出的excel格式为:Excel 97-2003 ,很强大
在我们的实践开发中我们经常会遇到很多关于报表问题的数据展示,当然了有报表肯定是少不了数据的导出和导入的一些功能的啦,我这个demo就是专门使用nopi第三方库对excel的数据批量导入和数据导出的相关功能实现。
主要介绍了ASP.NET(C#) Web Api通过文件流下载文件的方法,提供源码下载,需要的朋友可以参考下。
.net(dataset)输出流导出excel(无需生成模版excel文件,直接输出数据流导出excel表格)
简单的部分代码,将web中的数据导出为word或excel格式的文件,报表使用。
Spire.XLS for .NET支持把数据从数据库导出到Excel工作表,或者把数据从Excel数据导入到数据库。 Spire.XLS for .NET 提供强大的功能为开发者设置单元格格式。这次格式化数字,文字缩进,定位调整,设置单元格边线,...