| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1157 人关注过本帖, 1 人收藏
标题:求解释,求教,C#将数据库中的数据导出到Excel中
只看楼主 加入收藏
husilan1990
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-7-18
结帖率:0
收藏(1)
已结贴  问题点数:20 回复次数:9 
求解释,求教,C#将数据库中的数据导出到Excel中
大家有没有遇到过从数据库中到出6万条数据(每条数据有50个字段)到Excel中导不出的情况??6000条能导出。。。。现在遇到了这种情况不晓得怎么解决
搜索更多相关主题的帖子: 数据库 Excel 
2013-07-18 19:44
afdoa83
Rank: 4
等 级:业余侠客
威 望:7
帖 子:43
专家分:262
注 册:2012-7-31
收藏
得分:5 
如果在格式上没有严格要求的话,我建议大数据不要直接导入Excel
可以做成文件,用Tab分隔开来
比如
行1格1 (Tab) 行1格2 (Tab) ... (Tab) 行1格50
.
.
.
行n格1 (Tab) 行n格2 (Tab) ... (Tab) 行n格50
这样格式的文件可以用Excel打开,比直接导入Excel要快多了


[ 本帖最后由 afdoa83 于 2013-7-18 20:31 编辑 ]
2013-07-18 20:27
csharpluntan
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:7
帖 子:197
专家分:1122
注 册:2013-4-24
收藏
得分:5 
你用的数据库可能是SQL MySQL oracle;其中MySQL数据库最小,SQL次之 oracle数据库最大,6万条数据导致数据库崩溃,换个大点的数据库oracle试试。

投之以桃,报之以李
2013-07-19 09:29
husilan1990
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-7-18
收藏
得分:0 
回复 3楼 csharpluntan
不是数据库崩溃吧,因为我设置断点的时候能够看到从数据库中将数据都取出来了啊。就是将数据放在DataTable中的时候要每条数据添加到Excel中的时候就崩溃了。用的是一个for循环所以运行的速度慢,但是我觉得也不至于啊。60000*50的数据循环应该也能取出来啊。
 string filenameTemp = "~/File/Temp/校友基本信息模板.xls";
workBook = app.Workbooks.Open(Server.MapPath(filenameTemp), Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);

            workSheet = (Microsoft.Office.Interop.Excel.Worksheet)workBook.Sheets.get_Item(1);
            string Serverpath = System.Web.HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority);
            Serverpath = Serverpath + "/MuseumCollectionsImage/";
            int rowNumber = dt.Rows.Count;
            int columnNumber = dt.Columns.Count;
            
            for (int i = 0; i < rowNumber; i++)
            {
                for (int j = 0; j < columnNumber; j++)
                {
                        range = workSheet.Cells[2 + i, j + 1];
                        workSheet.Cells[2 + i, j + 1] = dt.Rows[i][j].ToString();
                }
            }
2013-07-19 12:08
岁月如刀
Rank: 6Rank: 6
来 自:冰冻星球
等 级:侠之大者
威 望:7
帖 子:165
专家分:477
注 册:2013-7-21
收藏
得分:5 
没有试过这么多的数据,我怀疑是Excel COM组件的问题,对数据库来说6W的数据不大。

试试一次不要写那么多数据呢?

例如:一次写5000条,最后用COPY把数据复制合并成一个SHEET。~

Now. Game over.
2013-07-22 00:43
husilan1990
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-7-18
收藏
得分:0 
回复 5楼 岁月如刀
我也觉得是Excel的问题啊。。因为我导出  6千条数据的时候能导出来啊     就是在那个循环的时候就奔溃了。。。所以很是纠结啊
2013-07-22 10:26
husilan1990
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-7-18
收藏
得分:0 
回复 5楼 岁月如刀
最终查出来应该是Excel组件的问题,因为要是循环里面什么都不写的话以下就运行了。但是添加到Excel中去之后那个循环就死了。。。所以求Excel的组件
2013-07-22 11:27
岁月如刀
Rank: 6Rank: 6
来 自:冰冻星球
等 级:侠之大者
威 望:7
帖 子:165
专家分:477
注 册:2013-7-21
收藏
得分:0 
http://blog.
试试第三方组件~~而且人家都不需要OFFICE的~~哈哈。

Now. Game over.
2013-07-22 11:30
ap030329
Rank: 1
等 级:新手上路
帖 子:4
专家分:5
注 册:2013-7-23
收藏
得分:5 
你导出的excel格式应该是03的xls格式把
03版的xls每个sheet表只支持65536条记录,你的记录条数如果超过了这个数目,就会出异常的了
处理方法是,当超过这个数的时候,把剩下的记录插到另一个sheet表中,如果还是超过,再次分开数据到新的sheet表
2013-07-23 15:35
csharpluntan
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:7
帖 子:197
专家分:1122
注 册:2013-4-24
收藏
得分:0 
5楼说的有道理,可能Excel有问题

投之以桃,报之以李
2013-07-24 09:10
快速回复:求解释,求教,C#将数据库中的数据导出到Excel中
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.043394 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved