导出到excel多个sheet

zhao_zps 2010-06-27 11:04:48
我现在用的代码

/// <summary>
/// 打开EXCEL 写入DataGridView中的数据
/// </summary>
/// <param name="dg"></param>
public static void input_excel(DataGridView dg)
{
Excel.Application excel = new Excel.Application();
excel.Application.Workbooks.Add(true);
excel.Visible = true;
///写入列名到EXCEL
for (int i = 1; i <= dg.ColumnCount; i++)
{
excel.Cells[1, i] = dg.Columns[i-1].HeaderText;
}
///写入数据到EXCEL
if (dg.AllowUserToAddRows == true)
{
for (int hang = 0; hang < dg.Rows.Count - 1; hang++)
{
for (int lie = 0; lie < dg.ColumnCount; lie++)
{
excel.Cells[hang + 2, lie + 1] = Convert.ToString(dg[lie, hang].Value);
}
}
}
else
{
for (int hang = 0; hang < dg.Rows.Count ; hang++)
{
for (int lie = 0; lie < dg.ColumnCount; lie++)
{
excel.Cells[hang + 2, lie + 1] = Convert.ToString(dg[lie, hang].Value);
}
}
}
}

excel2003最大行数为65000多行, 我想当行数超过这个数时导出到多个sheet中,怎么修改
...全文
962 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
cer01986 2011-09-05
  • 打赏
  • 举报
回复
谢谢楼主分享,很不错,顶!!!!!!!!!!!!!
捷哥1999 2010-06-27
  • 打赏
  • 举报
回复
1、判断你DataGridView中的数据函数,DataGridView1.Rows.Count属性,对65000做除法,看看要几个sheet才能存下
2、在写入函数中,遍历DataGridView,然后判断是否需要添加一个工作表来存储。

建议,经过将所有数据取出后,一次写入,例如取出65000行数据,存储到一个65000*列数的二维数组中,然后一次写入,否则速度会比较慢的 。


可以参考这里:
使用 Visual Studio 2005 Tools for Office (VSTO)开发C# Excel 程序
http://www.cnblogs.com/sunrack/articles/828500.html


wuyq11 2010-06-27
  • 打赏
  • 举报
回复
Excel.Worksheet sheet= (Excel.Worksheet)wb.Worksheets.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing);
添加多sheet
具体内容请参考我的BLOG:http://blog.csdn.net/smallwhiteyt/archive/2009/11/08/4784771.aspx 如果你耐心仔细看完本文,相信以后再遇到导出EXCLE操作的时候你会很顺手觉得SO EASY,主要给新手朋友们看的,老鸟可以直接飘过了,花了一晚上的时间写的很辛苦,如果觉得对你有帮助烦请留言支持一下,我会写更多基础的原创内容来回报大家。 C#导出数据到EXCEL表格是个老生常谈的问题了,写这篇文章主要是给和我一样的新手朋友提供两种导出EXCEL的方法并探讨一下导出的效率问题,本文中的代码直接就可用,其中部分代码参考其他的代码并做了修改,抛砖引玉,希望大家一起探讨,如有不对的地方还请大家多多包涵并指出来,我也是个新手,出错也是难免的。 首先先总结下自己知道的导出EXCEL表格的方法,大致有以下几种,有疏漏的请大家补充。 1.数据逐条逐条的写入EXCEL 2.通过OLEDB把EXCEL做为数据源来写 3.通过RANGE范围写入多行多列内存数据到EXCEL 4.利用系统剪贴板写入EXCEL 好了,我想这些方法已经足够完成我们要实现的功能了,方法不在多,在精,不是么?以上4中方法都可以实现导出EXCEL,方法1为最基础的方法,意思就是效率可能不是太高,当遇到数据量过大时所要付出的时间也是巨大的,后面3种方法都是第一种的衍生,在第一种方法效率低下的基础上改进的,这里主要就是一个效率问题了,当然如果你数据量都很小,我想4种方法就代码量和复杂程度来说第1种基本方法就可以了,或当你的硬件非常牛逼了,那再差的方法也可以高效的完成也没有探讨的实际意义了,呵呵说远了,本文主要是在不考虑硬件或同等硬件条件下单从软件角度出发探讨较好的解决方案。

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧