【原创】C#导出数据到EXCEL方法谈(附实例源码和超级无敌详细讲解) 本帖最后由 smallwhiteyt 于 2009-11-08 01:33:21 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 平时很多朋友都在找EXCEL的文 自己辛苦写了一晚上反而没人来顶下了 自己顶下 有一个更简单的办法String S="a\tb\tc"+Environment NewLine +"d\te\tf";然后调用excel的Paste方法,结果就是a b cd e f 先标记下,有空再来学习我也把操作excel的方法封装成了类,而且还加入了很多特性,比如字体,颜色,冻结等 我顶你.虽然我现在用不到,但是我知道你为一些正为导出EXCEL苦苦寻找答案的朋友很大的帮助.你的精神可加,很佩服..我也是学C#的..可以的话交流一下QQ21515316 顶了,让我想起来以前和EXCEL抗争的岁月 呵呵,找了一晚上,终于找到一份满意的答案,楼主,并不是大家不顶你,实在是大海里捞针不容易注意到金子在此呀,偶是从 google 里面搜索无数,一篇篇翻来,也是披沙拣金,就为了找个效率高的、写得清晰的,为了向楼主表示感谢,偶在此猛顶一个,谢谢你了,辛苦了。 补充:需要提醒各位用户,代码中应该稍做修改,不然有的同学会运行失败。需要提醒一下楼主做如下修正:具体修改如下:导出方法一:.........else{ if( gridView[j, i].Value != null ) excel.Cells[i + 2, j + 1] = gridView[j, i].Value.ToString();}导出方法2:for (int i = 0; i < iCurrSize; i++){ for (int j = 0; j < iColumnAccount; j++) { if (gridView[j, i + iParstedRow].Value != null) objVal[i, j] = gridView[j, i + iParstedRow].Value.ToString(); } .........} 第二种方法有一个错误 楼主当列数>26时 会弹出异常 HRESULT:0x800A03EC”错误 string RangEndCell=string.Empty; if (iColumnAccount>26) { RangEndCell = ((char)('A' + iColumnAccount / 26 - 1)).ToString() + ((char)('A' + iColumnAccount % 26 - 1)).ToString() + ((int)(iParstedRow + iCurrSize + 1)).ToString(); } else { RangEndCell = ((char)('A' + iColumnAccount - 1)).ToString() + ((int)(iParstedRow + iCurrSize + 1)).ToString(); } xlRang = worksheetData.get_Range("A" + ((int)(iParstedRow + 2)).ToString(), RangEndCell); // 调用Range的Value2属性,把内存中的值赋给Excel这样改之后就好了 thanks a lot for the code 楼主呀,5分太多了,可以传一份到我邮箱里来吗?[email protected]! C#开发linux下的webservice 自定义按钮更新 完整部署安装WINFORM问题 winforms 往水晶报表中传值 2个线程同时调用同一个对象的方法,该方法的参数会被改变吗? C#如何重载属性,并同时扩展属性的访问方式? 市场上有用VBA或Microsoft.Office.Interop.Word类库开发的商用软件吗 刷新用户控件 DataSet中删除记录问题 如果你收到被骂的短消息,请进来一下。 Socket通信,"数据报套接字上发送的消息大于内部消息缓冲器" 多次使用委托时被垃圾回收了,怎样解决?
String S="a\tb\tc"+Environment NewLine
+"d\te\tf";
然后调用excel的Paste方法,结果就是
a b c
d e f
我也把操作excel的方法封装成了类,而且还加入了很多特性,比如字体,颜色,冻结等
需要提醒一下楼主做如下修正:具体修改如下:导出方法一:
.........
else
{
if( gridView[j, i].Value != null )
excel.Cells[i + 2, j + 1] = gridView[j, i].Value.ToString();
}
导出方法2:
for (int i = 0; i < iCurrSize; i++)
{
for (int j = 0; j < iColumnAccount; j++)
{
if (gridView[j, i + iParstedRow].Value != null)
objVal[i, j] = gridView[j, i + iParstedRow].Value.ToString();
} .........
}
当列数>26时 会弹出异常 HRESULT:0x800A03EC”错误
string RangEndCell=string.Empty;
if (iColumnAccount>26)
{
RangEndCell = ((char)('A' + iColumnAccount / 26 - 1)).ToString() + ((char)('A' + iColumnAccount % 26 - 1)).ToString() + ((int)(iParstedRow + iCurrSize + 1)).ToString();
}
else
{
RangEndCell = ((char)('A' + iColumnAccount - 1)).ToString() + ((int)(iParstedRow + iCurrSize + 1)).ToString();
}
xlRang = worksheetData.get_Range("A" + ((int)(iParstedRow + 2)).ToString(), RangEndCell);
// 调用Range的Value2属性,把内存中的值赋给Excel
这样改之后就好了