[原创]大量数据导出为Excel文件的问题解决(C#,ASP.NET)
2007-12-21 15:52
1051 查看
依据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++)
return sb.ToString();
大家看到了把,我们可以使用create语句创建sheet。我们使用的表的名称,将变成sheet名称。
建议大家导出的名称可以这样依次起:比如产品信息数据,表名可以分别叫 产品信息(第1页)、产品信息(第2页)等等。
代码片段二 按照需要自动创建多个sheet:
for (int i = 0; i < dt.Rows.Count; i++)
{
{
.
最后提醒大家:excel作为数据库的时候,是可以支持事务处理的哦,大家别忘了使用事务机制。
如果大家处理的数据量比较小,要求的格式非常复杂,比如多重表头,有统计图形等,那么请使用其他的excel导出方法。本解决方法适用范围前面已经说过了,请大家参考。
http://piedpiper.cnblogs.com
本文是偶原创,想转贴的朋友劳驾写明转贴二字。呵呵
大量数据导出到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++)
return sb.ToString();
大家看到了把,我们可以使用create语句创建sheet。我们使用的表的名称,将变成sheet名称。
建议大家导出的名称可以这样依次起:比如产品信息数据,表名可以分别叫 产品信息(第1页)、产品信息(第2页)等等。
代码片段二 按照需要自动创建多个sheet:
for (int i = 0; i < dt.Rows.Count; i++)
{
{
.
最后提醒大家:excel作为数据库的时候,是可以支持事务处理的哦,大家别忘了使用事务机制。
如果大家处理的数据量比较小,要求的格式非常复杂,比如多重表头,有统计图形等,那么请使用其他的excel导出方法。本解决方法适用范围前面已经说过了,请大家参考。
http://piedpiper.cnblogs.com
本文是偶原创,想转贴的朋友劳驾写明转贴二字。呵呵
相关文章推荐
- asp.net中将gridview数据导出成Excel问题解决
- 大量数据导出为Excel文件的问题解决
- 关于asp.net C# 导出Excel文件 打开Excel文件格式与扩展名指定格式不一致的解决办法
- asp.net<Web版> ---GridView 数据导出到excel表,系列问题<一>---导出的Excel文件格式与文件扩展名指定的格式不一致
- 关于asp.net C# 导出Excel文件 打开Excel文件格式与扩展名指定格式不一致的解决办法
- 关于asp.net C# 导出Excel文件打开Excel文件格式与扩展名指定格式不一致的解决办法
- 关于asp.net C# 导出Excel文件 打开Excel文件格式与扩展名指定格式不一致的解决办法
- 关于asp.net C# 导出Excel文件 打开Excel文件格式与扩展名指定格式不一致的解决办法
- [ASP.NET-C#]将DataSet、DataTable中的数据导出为Excel的解决方法
- ASP.NET导出Excel打开时提示:与文件扩展名指定文件不一致解决方法
- Asp.Net MVC 使用FileResult导出Excel数据文件
- Asp.NET导出Excel文件乱码解决若干方法 (转)
- ASP.NET(C#) DataSet数据导出到Excel
- Asp.net/c#+OleDb操作excel文件(二),数据传输使用Parameters
- asp.net中使用excel类导出Excel文件,并导出到web客户端中遇到的问题
- Asp.net 2.0 GridView数据导出Excel文件(示例代码下载)
- Asp.net 2.0 GridView数据导出Excel文件(示例代码下载)
- Asp.net 2.0 GridView数据导出Excel文件(示例代码下载)
- [转]asp.net导出Excel/Csv格式数据最优方案(C#)
- 在使用 ADO.NET 导出 Excel 文件时,设置 IMEX=1 仍不能导出所有数据的解决办法