WINFORM下 DATAGRIDVIEW 导出 EXCEL

1: 用第三方控件的导出方法时速度很快,自己写的速度慢,后发现将数据写到数组,再将数组数据写入EXCEL的RANGE速度较快

ExpandedBlockStart.gif 代码
    Dim  objData(,)  As   Object   =   New   Object (RowCount  +   1 , ColCount) {}
        
Dim  cs  As  DataGridViewColumn
        
For   Each  cs  In  myDGV.Columns
            objData(RowIndex, colIndex) 
=  myDGV.Columns(colIndex).HeaderText
            colIndex 
+=   1
        
Next
        
For  RowIndex  =   0   To  RowCount  -   1
            
For  colIndex  =   0   To  ColCount  -   1
                objData(RowIndex 
+   1 , colIndex)  =  myDGV.Rows(RowIndex).Cells(colIndex).Value
            
Next
        
Next
  range.Value2 
=  objData
        System.Windows.Forms.Application.DoEvents()

 

2: 导出EXCEL后,可能EXCEL会对显示格式进行自动转换,例如较长的数字可能会按科学计数法来显示,加一条语句后OK

   range.NumberFormat  =  Microsoft.Office.Interop.Excel.XlParameterDataType.xlParamTypeUnknown

 

3: EXCEL资源释放的问题

微软推荐为

ExpandedBlockStart.gif 代码
         ' ReleaseComObject(oCells)
        ReleaseComObject(range)
        ReleaseComObject(oSheet)
        ReleaseComObject(oSheets)
        ReleaseComObject(oBook)
        ReleaseComObject(oBooks)
        ReleaseComObject(oExcel)


        GC.Collect()
        GC.WaitForPendingFinalizers()
        GC.Collect()
        GC.WaitForPendingFinalizers()

 

注意声明的时候也要一层一层按顺序声明

 

可以参考这篇文章 http://support.microsoft.com/kb/306023/zh-cn

转载于:https://www.cnblogs.com/ioriwuhj/archive/2010/02/25/1673439.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值