日期:2014-05-20  浏览次数:21127 次

怎么把DataSet中的内容一次写入EXCEL中,请看代码
Excel.Application   excel   =   new   Excel.Application();
excel.Visible   =   true;

excel.Application.Workbooks.Open(@ "d:\abc.xls ",Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value);

Worksheet   worksheet   =   (Worksheet)   excel.ActiveSheet;
Range   r   =   worksheet.get_Range( "B5 ", "D8 ");
r.Value2   =   "a ";
r.Value2   =   "b ";
excel.Quit();
如果这样写从B5到D8都写成了b,用r.Value2   =   dt.Tables[0].Rows写也不对,请问怎么写才能一次写入.

------解决方案--------------------
不管什么方法,肯定要循环转换DATASET
------解决方案--------------------
Range r = worksheet.get_Range( "B5 ", "D8 ");
r.Value2 = "a ";
r.Value2 = "b ";
把r得值先付了a,然后付了b。
要在不同的格里写不同的值
需要循环写cell[x,y]
------解决方案--------------------
可以将一个安全数组付值给r.Value2,我只用过VC++中的COleSafeArray,不知道C#中的数组是不是属于安全数组。

还有另一种思路,就是将DataSet的值生成一个格式字符串,然后将之放到剪贴板,最后在EXCEL进程中粘贴。

格式字符串的形式你可以自己在EXCEL中复制一个区域,然后在写字板中粘贴看看,下面是一个格式字符串的例子:
"第1行1列 "\t "第1行2列 "\t "第1行3列 "\t\n "第2行1列 "\t "第2行2列 "\t "第2行3列 "\t\n

以上是一个2行3列的矩阵其中\t单元格分隔,\n是行分隔C#中用NewLine代替