您好,欢迎来好库! [ 请登录 ] [ 免费注册 ] 好库网首页 | 我的好库
好库网
好饱的专栏
好饱

VB.NET或C#将DataSet快速导出到Excel中

所属分类:所有分类 » 软件开发 » .NET
发布者:好饱
发布日期:2011-5-12 15:53:42   更新日期:2011-5-12 15:56:54
浏览次数:175
阅读次数:851
评分:4.80
介绍:在.NET应用中将数据导出到Excel中是非常常见的需求。但是将数据一个一个放入单元格在数据量很大的时候会引发性能问题, 那有没有更好的方法呢?
正文:

下载源代码

 

在.NET应用中将数据导出到Excel中是非常常见的需求。但是将数据一个一个放入单元格在数据量很大的时候会引发性能问题,

那有没有更好的方法呢?

 

传统一个一个复制的方法


网上的方法绝大多数是这个方法,将值一个一个复制到Excel单元格,下面的C#代码演示了如何将DataTable中的数据写入Excel工作表:

 

// Copy the values from a DataTable to an Excel Sheet (cell-by-cell)

for (int col = 0; col < dataTable.Columns.Count; col++)
{
    for (int row = 0; row < dataTable.Rows.Count; row++)
    {
        excelSheet.Cells[row + 1, col + 1] = 
                dataTable.Rows[row].ItemArray[col];
    }
}
这样的操作效率是很低的,当数据量大的时候会拖垮我的程序。
快速批量复制的方法

我的方法使用Microsoft Excel 对象库中提供的Range类的Value2属性。我们可以选择单元格的范围,然后一次性赋值给它们,只需一个交互性操作。正确分配一个值的单元格区域,我们可以使用一个双维对象数组。 
下面的C#代码显示了如何从一个双维对象数组赋值到一个单元格范围中:
// Copy a bi-dimensional object array to an Excel cell range

excelSheet.get_Range("A1:H25", Type.Missing).Value2 = 
    bidimensionalObjectArray;
本文中包含的源代码演示了一个小型的Windows应用程序,它使用两种方法将数据导出到Excel。 它显示了每一个方法需要完成的时间。此演示使用Northwind数据库创建一个SQL Server的本地连接。 它生成一个Customers表的DataSet。 为了使数据量更多,我们为DataTable生成24份重复的拷贝。 然后,我们运用两种方法来产生两个Excel工作簿。
源代码包含一个C#和一个VB.NET版本。 根据我自己的测试表明该方法快35倍左右。 你也可以自己测试一下,并得出自己的结论。

 

 



免责声明:好库网所展示的信息由买卖双方自行提供,其真实性、准确性和合法性由信息发布人负责。好库网不提供任何保证,并不承担任何法律责任。