VB.NET控制EXCEL打印的速度问题!

         在用vb.net控制excel打印报表时发现一个问题,就是当记录数比较打的时候导出速度非常慢,快没法忍受了,尤其是内存比较小的时候.
         原来的代码是用一个for循环直接向sheets.Cell中添数据,行少的时候还行,行多了就完了.哪是一个慢啊.后来是用for循环向数组中写数据然后在用数组向sheets.Range.Value中写数据.速度有所提高,但仍然不理想.
代码如下:
            Dim DataArray(ds.Tables( " tj " ).Rows.Count ,   9 ) As Object



            For i 
=   0  To ds.Tables( " tj " ).Rows.Count -  1

                DataArray(
3  + i + j ,   0 =  ds.Tables( " tj " ).Rows(i).Item( " fph " )
                DataArray(
3  + i + j ,   1 =  ds.Tables( " tj " ).Rows(i).Item( " spm " )
                DataArray(
3  + i + j ,   2 =  ds.Tables( " tj " ).Rows(i).Item( " zsl " )
                DataArray(
3  + i + j ,   3 =  ds.Tables( " tj " ).Rows(i).Item( 3 )

                '计算总费用
                Dim fysql As New OleDb.OleDbCommand
                Dim zfy As Double
                fysql.CommandText 
=   " select sum(je) from fy where fph=' "  + ds.Tables( " tj " ).Rows(i).Item( " fph " ) +  " ' group by fph "
                fysql.Connection 
=  conn
                conn.Open()
                zfy 
=  fysql.ExecuteScalar()
                conn.Close()

                Select Case ds.Tables(
" tj " ).Rows(i).Item( " bz " )
                    Case 
" 美元 "
                        DataArray(
3  + i + j ,   5 =  ds.Tables( " tj " ).Rows(i).Item( " bgje " )
                        '利润
= sum(单价*数量)-总费用+退税金额
                        DataArray(
3  + i + j ,   6 =  ds.Tables( " tj " ).Rows(i).Item( " zz " ) * CSng(TextBox2.Text) - zfy + ds.Tables( " tj " ).Rows(i).Item( " tsje " )    '按美元汇率计算利润
                    Case 
" 日元 "
                        DataArray(
3  + i + j ,   4 =  ds.Tables( " tj " ).Rows(i).Item( " bgje " )

                        DataArray(
3  + i + j ,   6 =  ds.Tables( " tj " ).Rows(i).Item( " zz " ) * CSng(TextBox1.Text) - zfy + ds.Tables( " tj " ).Rows(i).Item( " tsje " )       '按日元汇率计算利润
                End Select


                DataArray(
3  + i + j ,   7 =  ds.Tables( " tj " ).Rows(i).Item( " myfs " )
                DataArray(
3  + i + j ,   8 =  ds.Tables( " tj " ).Rows(i).Item( " hxdh " )

            Next
            sheet.Range(sheet.Cells(
3 ,   1 ) ,  sheet.Cells(ds.Tables( " tj " ).Rows.Count +  2 ,   9 )).Value  =  DataArray
            sheet.Range(sheet.Cells(
3 ,   1 ) ,  sheet.Cells(i +  2 ,   9 )).Borders.LineStyle  =   1

      在csdn中看到有用CSV 文件做的,对csv文件还不了解,以后在说.

转载于:https://www.cnblogs.com/lsceng/archive/2007/01/11/617668.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值