社区
C#
帖子详情
大数据量的问题
TTLOVEYOU3344
2007-01-26 09:29:57
最近公司有个需求,就是把一些数据倒出来,但这个数据非常大,大约有3W多笔,要求是这样的,就是把这些资料在前台显示,同时要转为EXCEL.我用了个存储过程,但由于资料太多,前台还是无法显示.其实显示前十笔给他看就行了,关键是要倒出为EXCEL,所以所有的资料必须全部从数据库里取出来.各位有什么好办法
...全文
511
25
打赏
收藏
大数据量的问题
最近公司有个需求,就是把一些数据倒出来,但这个数据非常大,大约有3W多笔,要求是这样的,就是把这些资料在前台显示,同时要转为EXCEL.我用了个存储过程,但由于资料太多,前台还是无法显示.其实显示前十笔给他看就行了,关键是要倒出为EXCEL,所以所有的资料必须全部从数据库里取出来.各位有什么好办法
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
25 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jcyluck
2007-01-26
打赏
举报
回复
效率不差,曾导过5万条的记录,也就10秒左右的样子
jcyluck
2007-01-26
打赏
举报
回复
楼主可以先将数据用DATAGRIDVIEW在前台显示,然后再将DATAGRIDVIEW(或DATASET)的数据导入到EXCEL里,请参考下面的代码,这代码也不是我写的,楼主主要看如何用myData数组来获取与填充就行了
/**//// <summary>
/// DataGridView导出到Excel
/// 操作步骤:
/// 1)先添加对Excel的引用。选择项目-〉添加引用-〉COM-〉添加Microsoft Excel 9.0
/// (不同的office讲会有不同版本的dll文件).
/// 2)引入using Microsoft.Office.Interop.Excel;和using System.Reflection;
///
/// </summary>
/// <param name="dgv"></param>
public void DBtoExcel(DataGridView dgv)
{
int rowCount = dgv.RowCount;
int columnCount = dgv.ColumnCount;
//
Microsoft.Office.Interop.Excel.Application exc = new Microsoft.Office.Interop.Excel.Application();
if (exc == null)
{
throw new Exception("Excel无法启动");
}
//
exc.Visible = true;
//
Workbooks workbooks = exc.Workbooks;
//
_Workbook workbook = workbooks.Add(XlWBATemplate.xlWBATWorksheet);
//
Sheets sheets = exc.Sheets;
_Worksheet worksheet = (_Worksheet)sheets[1];
if (worksheet == null)
{
throw new Exception("Worksheet error");
}
//
Range r = worksheet.get_Range("A1", Missing.Value);
if (r == null)
{
MessageBox.Show("Range无法启动");
throw new Exception("Range error");
}
//以上是一些例行的初始化工作,下面进行具体的信息填充
//填充标题
int ColIndex = 1;
foreach (DataGridViewColumn dHeader in dgv.Columns)
{
worksheet.Cells[1, ColIndex++] = dHeader.HeaderText;
}
//获取DataGridView中的所有行和列的数值,填充到一个二维数组中.
object[,] myData = new object[rowCount + 1, columnCount];
for (int i = 0; i < rowCount; i++)
{
for (int j = 0; j < columnCount; j++)
{
myData[i, j] = dgv[j,i].Value; //这里的获取注意行列次序
}
}
//将填充好的二维数组填充到Excel对象中.
r = worksheet.get_Range(worksheet.Cells[2, 1], worksheet.Cells[rowCount + 1, columnCount]);
r.Value2 = myData;
}
/**//// <summary>
/// 导出GridView到Excel中的关键之处
/// 用法: ToExcel(GVStaff, TextBox1.Text);
/// </summary>
/// <param name="ctl"></param>
/// <param name="FileName"></param>
public static void ToExcel(System.Web.UI.Control ctl, string FileName)
{
HttpContext.Current.Response.Charset = "UTF-8";
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.Default;
HttpContext.Current.Response.ContentType = "application/ms-excel";
HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + "" + FileName + ".xls");
ctl.Page.EnableViewState = false;
System.IO.StringWriter tw = new System.IO.StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(tw);
ctl.RenderControl(hw);
HttpContext.Current.Response.Write(tw.ToString());
HttpContext.Current.Response.End();
}
//必须有下面这句!否则不会通过!
public override void VerifyRenderingInServerForm(Control control)
{
// Confirms that an HtmlForm control is rendered for
}
w5i2e1
2007-01-26
打赏
举报
回复
你的3W是什么意思?是3万多条数据是吗?先把数据查询出来插入到临时表中,然后从临时表中做查询,肯定比你直接查库要快至少5倍以上!!!
human_2
2007-01-26
打赏
举报
回复
3W没关系啊,直接在EXCEL里面加入数据都可以
yan63
2007-01-26
打赏
举报
回复
但数据库不在局域网内
----------------------------
是否有防火墙?如果有的话就比较复杂了,如果通过internet可以直接访问到,那么dts的使用和本地sqlserver也应该没有区别
小小暴徒
2007-01-26
打赏
举报
回复
帮你顶,让高手来捧场
TTLOVEYOU3344
2007-01-26
打赏
举报
回复
其实我不显示也可以,我只是要把这些数据倒成EXCEL就可以了,但数据库不在局域网内
j_lei407
2007-01-26
打赏
举报
回复
mark
viena
2007-01-26
打赏
举报
回复
前台分页显示吧
losteveb
2007-01-26
打赏
举报
回复
帮你顶上去!!
yan63
2007-01-26
打赏
举报
回复
如果对效率,调度要求比较高可以使用sqlserver的dts,以windows service的方式运行,与前台交互可以使用remoting注册tcp/ip通道(同局域网内部署),关于.net的dts开发,可以参考
http://www.programfan.com/article/showarticle.asp?id=2712
yanro
2007-01-26
打赏
举报
回复
3w .
我以前都导过80万的数据.
时间用了好象是十几分钟吧.
如果想要代码:QQ:84115357
jydqwe
2007-01-26
打赏
举报
回复
来学习下 顺便帮LZ顶了
TTLOVEYOU3344
2007-01-26
打赏
举报
回复
太感谢liujia_0421了!!!!!
liujia_0421
2007-01-26
打赏
举报
回复
or try...
http://www.cnblogs.com/forrest_lu/archive/2004/04/21/6966.aspx
方法挺简单,不知道效率如何...
liujia_0421
2007-01-26
打赏
举报
回复
这里有篇文章说的是从数据库导入excel,8000条只需要4秒钟...
不知道对你有没有帮助...
http://sh.szstudy.cn/showArticle/26700.shtml
lovvver
2007-01-26
打赏
举报
回复
3W条数据,如果前台查看,使用分页显示(一次只取几页的数据即可)。
如果要导出,有几种选择:
1。在服务器上导出到excel,然后把excel下载到客户端来
2。将数据放到DataSet里返回到客户端,然后手动来写excel
个人觉得,1。是个不错的选择。
liujia_0421
2007-01-26
打赏
举报
回复
顺便问一下,你用的是什么数据库?
liujia_0421
2007-01-26
打赏
举报
回复
对于导数据,你看看应该有专门的工具...
以前做过Oracle将文本文件导入数据库,用的是Oracle的sqlloader,当时是写成的一个批处理,然后在程序中调就行了,速度特别快...速度大约相当于在程序中解析字符串,然后插入数据库这种做法的25倍左右(做过实验)...
对于从数据库中往外面导,我想也应该有相应的工具吧...如果真有的话,不妨也写成批处理,然后在程序中调用即可...
仅供参考..
GXY2005
2007-01-26
打赏
举报
回复
我这3W条是通过三个大数据量的表查询出来的数据
----------------------------
那你先把查询结果放另一个表然后直接倒出Excel
加载更多回复(4)
nginx
大数据
量
问题
最近在工作中,发现查询
大数据
量
时,前台无返回数据,经查系统日志无报错,正常返回。怀疑是nginx的
问题
,于是不经过nginx访问,可以成功访问相同数据
量
。最后发现,nginx配置流
量
那里需要调整,proxy_buffer_size ...
关于
大数据
量
查询报表优化
针对数据
量
巨大的报表查询,总结了一下几个处理方法: 看一个运用案例:多粒度(年月日,省、地市、热点、ac、ap)下每天20W条,每月800W条,自由选择35天内数据的查询。 直接查询页面崩溃,运用了以下几点,基本上...
导出excel功能(解决
大数据
量
问题
)
目前我们做的系统,导出excel功能都存在一个
问题
,如果数据
量
一大(比如上万条以上的记录),如果用传统的方式导出excel速度都很慢,甚至最终导致内存益出,最终死机;(请大伙最好都确认一下各自负责的系统存在的
问题
) 例如...
大数据
量
报表系统的改进方案
如果是行家,提起报表,你是否想起了JasperReports( iReport )、Birt、JFreeReport、水晶报表等?...但是我讲的是一种
大数据
量
的报表,可能不是一张word或者几千条的excel能够导出的,比如说订单报表、销
数据
量
很大的排序
问题
大
量
数据如何排序
数据
量
很大的排序
问题
大
量
数据如何排序 【尊重原创,转载请注明出处】http://blog.csdn.net/guyuealian/article/details/51119499 同学某天参加腾讯面试,技术面的时候,面试官问了排序
问题
:
问题
一:若有...
C#
110,536
社区成员
642,576
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章