| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2693 人关注过本帖
标题:C#中进度条的问题
只看楼主 加入收藏
opqst596
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2007-6-27
收藏
 问题点数:0 回复次数:12 
C#中进度条的问题

我做一个从Datagrid中导出数据到excel中
由于数据较大
我想加一个进度条
但不知道怎么做
有人帮我做一下吗
我现在把datagrid导出到excel的代码放出
try
{
System.Data.DataTable dt =(System.Data.DataTable) this.dataGrid1.DataSource;
if(dt.Rows.Count==0)
{
MessageBox.Show("对不起,你没有查询到任何记录,不能导出数据");
}
else
{
Excel.Application excel= new Excel.Application();
int rowIndex=1;
int colIndex=0;

excel.Application.Workbooks.Add(true);


foreach(DataColumn col in dt.Columns)
{
colIndex++;
excel.Cells[1,colIndex]=col.ColumnName;
}

foreach(DataRow row in dt.Rows)
{
rowIndex++;
colIndex=0;
foreach(DataColumn col in dt.Columns)
{
colIndex++;
excel.Cells[rowIndex,colIndex]=row[col.ColumnName].ToString();
}
}





excel.Quit();
excel=null;
GC.Collect();
}
}

catch{MessageBox.Show("没有实例化对象,请先实例化对象");}
}

搜索更多相关主题的帖子: 进度 excel Data System 数据 
2007-06-27 16:22
jacklee
Rank: 7Rank: 7Rank: 7
来 自:XAplus
等 级:贵宾
威 望:32
帖 子:1769
专家分:104
注 册:2006-11-3
收藏
得分:0 
PROGRESSBAR。VALUE=0;
PROGRESSBAR。MAX=DATAGRID。ROWS。COUNT;
MIN=0;
FOR(INT I=0;I《GRID。ROWS。COUNT;I++)
{
EXPORT A ROW;
PROGRESSBAR。VALUE++
}

XAplus!
讨论群:51090447
删吧删吧,把我的号给删了!
2007-06-27 16:29
飙马
Rank: 5Rank: 5
来 自:马里亚纳
等 级:贵宾
威 望:15
帖 子:779
专家分:280
注 册:2007-3-28
收藏
得分:0 

private void statusBar1_DrawItem(object sender, System.Windows.Forms.StatusBarDrawItemEventArgs sbdevent)
{ //用sbpnlImagePercent表示进度。Panels里面会有显示名称的,显示大小的,尺寸的等等
if(sbdevent.Panel==sbpnlImagePercent)
{
int percent=100;
if(判断条件,像你的按纽被点击)
{
/*
Photograph photo=_album.CurrentPhoto;
Rectangle dr=pnlPhoto.ClientRectangle;
int imgWidth=photo.Image.Width;
int imgHeight=photo.Image.Height;
percent=100*Math.Min(dr.Width,imgWidth)*Math.Min(dr.Height,imgHeight)/(imgWidth*imgHeight);
*/这是判断图片的,改成你判断Columns或Rows完成的比例
}
Rectangle percentRect=sbdevent.Bounds;
percentRect.Width=sbdevent.Bounds.Width*percent/100;
sbdevent.Graphics.FillRectangle(Brushes.SlateGray,percentRect);
sbdevent.Graphics.DrawString(percent.ToString(),sbdevent.Font ,Brushes.White,sbdevent.Bounds);
}

}

[此贴子已经被作者于2007-6-27 16:38:20编辑过]


IT精英如同彩票:平凡的人像5块也中不到一样普遍,努力一点你中了5元保了个本。奖金越高,机率也就越小,付出的也越多,盖茨如同500万一样稀有。虽然每天忙碌而平凡,但我努力成为精英,做梦中了500万。
2007-06-27 16:36
飙马
Rank: 5Rank: 5
来 自:马里亚纳
等 级:贵宾
威 望:15
帖 子:779
专家分:280
注 册:2007-3-28
收藏
得分:0 
你的遍历是先列,再行。
你最好弄一个。
(colIndex*rowIndex)/(dt.Coloumn.Count*dt.Coloumn.Count)*100

IT精英如同彩票:平凡的人像5块也中不到一样普遍,努力一点你中了5元保了个本。奖金越高,机率也就越小,付出的也越多,盖茨如同500万一样稀有。虽然每天忙碌而平凡,但我努力成为精英,做梦中了500万。
2007-06-27 16:49
飙马
Rank: 5Rank: 5
来 自:马里亚纳
等 级:贵宾
威 望:15
帖 子:779
专家分:280
注 册:2007-3-28
收藏
得分:0 
private void statusBar1_DrawItem(object sender, System.Windows.Forms.StatusBarDrawItemEventArgs sbdevent)
{ //用sbpnlImagePercent表示进度。Panels里面会有显示名称的,显示大小的,尺寸的等等
if(sbdevent.Panel==sbpnlImagePercent)
{
int percent=100;
if(rowIndex>1 && colIndex>0)
{
percent=(colIndex*rowIndex)/(dt.Coloumn.Count*dt.Coloumn.Count)*100;
}
Rectangle percentRect=sbdevent.Bounds;
percentRect.Width=sbdevent.Bounds.Width*percent/100;
sbdevent.Graphics.FillRectangle(Brushes.SlateGray,percentRect);
sbdevent.Graphics.DrawString(percent.ToString(),sbdevent.Font ,Brushes.White,sbdevent.Bounds);

{

[此贴子已经被作者于2007-6-27 16:55:29编辑过]


IT精英如同彩票:平凡的人像5块也中不到一样普遍,努力一点你中了5元保了个本。奖金越高,机率也就越小,付出的也越多,盖茨如同500万一样稀有。虽然每天忙碌而平凡,但我努力成为精英,做梦中了500万。
2007-06-27 16:54
opqst596
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2007-6-27
收藏
得分:0 
问题还未解决 请知道的兄弟帮忙

2007-06-27 17:21
bygg
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:乖乖的心中
等 级:版主
威 望:241
帖 子:13555
专家分:3076
注 册:2006-10-23
收藏
得分:0 
首先取出总的数据条数 dNum
然后:
foreach(DataRow row in dt.Rows)
{
rowIndex++;
colIndex=0;
foreach(DataColumn col in dt.Columns)
{
colIndex++;
excel.Cells[rowIndex,colIndex]=row[col.ColumnName].ToString();
this.progressBra1.Value = rowIndex * 100 / dNum;
}
}

刚开始时,将进度条隐藏.当数据导出的那刻,就显示进度条,导出完时再隐藏它.

飘过~~
2007-06-27 18:14
opqst596
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2007-6-27
收藏
得分:0 
progressBra1 这个对象怎么定义啊??
ProgressBar progressBar1 = new ProgressBar();这样定义有错误
应该怎么定义这个对象啊?

2007-06-28 10:19
飙马
Rank: 5Rank: 5
来 自:马里亚纳
等 级:贵宾
威 望:15
帖 子:779
专家分:280
注 册:2007-3-28
收藏
得分:0 
不能单独那样定义。
先定义StatusBar,再Panel Collection,再成员,再添加。Style设成OwnerDraw。

IT精英如同彩票:平凡的人像5块也中不到一样普遍,努力一点你中了5元保了个本。奖金越高,机率也就越小,付出的也越多,盖茨如同500万一样稀有。虽然每天忙碌而平凡,但我努力成为精英,做梦中了500万。
2007-06-28 10:26
bygg
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:乖乖的心中
等 级:版主
威 望:241
帖 子:13555
专家分:3076
注 册:2006-10-23
收藏
得分:0 
不用定义,你拖一个进来就可以用了.

飘过~~
2007-06-28 10:58
快速回复:C#中进度条的问题
数据加载中...
 
   



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

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