最近在论坛里又看到很多关于DataTable(DataSet)导入Excel的帖子,我也温故知新一下,用VS2010重新整理了一个Sample。这个问题简化一下就是内存数据到文件,也就是遍历赋值,只不过文件是有特殊格式的Excel,因此不能像一般的文本文件处理。另外,还有一种叫CSV的文件(用逗号分隔的文件,扩展名为.csv),因为默认用Excel打开的,网友也往往把这种文件误当做Excel文件。其实一个通过Excel COM对象作成Excel文件,一个通过一般的IO处理,他们的作成过程是完全不一样的。
先来看看Sample的结构: Form_Load的时候读取DB,绑定到DataGridView。按下"Data2Excel"按钮导出Excel文件(*.xls文件), 按下”Data2CSV”按钮导出CSV文件(*.csv文件)
其实CSV文件用文本文件可以直接打开,看下图,就是逗号分隔的文件,直接通过StringBuilder构造每一行字符串,最后通过System.IO.File.WriteAllText就可以了。
而关于Excel的操作,有两种方式,一种通过Cell一个一个单元格赋值,还有一种通过系统剪切板通过粘贴的方式赋值。因为跨托管域赋值,第一种赋值方式效率很低,原因嘛,可以看看这里:《.NET操作Excel COM对象》。所以Sample里选择了第二种方式。
另外,.NET 4.0里C#终于可以用上像VB.NET的可选参数了 T_T 真是省不少事啊,以前C#操作Excel都要写上很多System.Reflection.Missing.Value呢。
Sample的下载地址: http://download.csdn.net/source/2940265