说明:

1>GridView 导出到 Excel (如果分页,只导出当前页数据)

2>GridView 导出到 Excel

3>方法2可以参考DataTable 导出到 Excel

自定义类如下:

 #region GridView 导出到 Excel   Method First
/// <summary>
/// GridView 导出到 Excel (如果分页,只导出当前页数据)
/// </summary>
/// <param name="gv">GridView</param>
/// <param name="sheetName">工作表名称</param>
/// <param name="isOpen">导出完成后是否打开Excel 如果不打开会自动杀死当前Excel进程</param>
/// <returns>错误信息,如果为空,说明用户取消导入</returns>
public static string GvToExcel(DevExpress.XtraGrid.Views.Grid.GridView gv, string sheetName, bool isOpen)
{
//返回值
string str = "";
string fileName = "";
//保存对话框,是否保存
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "(*.xls,*.xlsx)|*.xls;*.xlsx";
if (sfd.ShowDialog() != DialogResult.OK)
{
str = "";
return str;
}
fileName = sfd.FileName; if (gv == null)
{
str = "GridView 不能为空!";
return str;
}
if (gv.RowCount < 1)
{
str = "没有记录可以导出";
return str;
} //获取列名、列标题 放到List集合中
System.Collections.ArrayList listCaption = new System.Collections.ArrayList();
System.Collections.ArrayList listFieldName = new System.Collections.ArrayList();
for (int i = 0; i < gv.Columns.Count; i++)
{
if (gv.Columns[i].Visible)
{
listCaption.Add(gv.Columns[i].Caption);
listFieldName.Add(gv.Columns[i].FieldName);
}
} Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
excel.Workbooks.Add(true);
Microsoft.Office.Interop.Excel.Worksheet wSheet = (Microsoft.Office.Interop.Excel.Worksheet)excel.ActiveSheet;
Microsoft.Office.Interop.Excel.Range range;
if (sheetName != null && sheetName.Length > 0)
{
wSheet.Name = sheetName;
}
else
{
wSheet.Name = gv.Name;
} try
{
//写标题
for (int j = 0; j < listCaption.Count; j++)
{
excel.Cells[1, j + 1] = listCaption[j];
range = (Microsoft.Office.Interop.Excel.Range)wSheet.Cells[1, j + 1];
range.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
}
//写内容
for (int m = 0; m < gv.RowCount; m++)
{
for (int n = 0; n < listCaption.Count; n++)
{
excel.Cells[m + 2, n + 1] = gv.GetRowCellValue(m, listFieldName[n].ToString()) is DBNull ? "" : gv.GetRowCellValue(m, listFieldName[n].ToString()).ToString();
}
} wSheet.SaveAs(fileName,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); str = "导出成功!共导出 " + gv.RowCount + " 条数据";
return str;
}
catch
{
str = "导出异常,请重试";
return str;
}
finally
{
if (isOpen)
{
//前台显示给用户
excel.Visible = true;
wSheet = null;
excel = null;
}
else
{
excel.Visible = false;
excel.Quit();
// excel = null;
//杀死Excel 进程
KillProcess(excel);
}
GC.Collect();
}
}
#endregion #region GridView 导出到 Excel Method Second
/// <summary>
/// GridView 导出到 Excel
/// </summary>
/// <param name="dt">GridControl.DataSource ==dt</param>
/// <param name="gv">GridView 名称</param>
/// <param name="sheetName">工作表名称</param>
/// <param name="isOpen">导出完成后是否打开Excel 如果不打开会自动杀死当前Excel进程</param>
/// <returns>错误信息,如果为空,说明用户取消导入</returns>
public static string GvToExcel(DataTable dt, DevExpress.XtraGrid.Views.Grid.GridView gv, string sheetName, bool isOpen) {
//返回值
string str = ""; //执行方法,如果datatable为空,导出当前页数据,否则,导出所有页数据
if(dt==null){
str=GvToExcel(gv,sheetName,isOpen);
}else{
if (gv == null)
{
str = "GridView 不能为空!";
return str;
}
if (gv.RowCount < 1)
{
str = "没有记录可以导出";
return str;
} //获取列名、列标题 放到List集合中
System.Collections.ArrayList listCaption = new System.Collections.ArrayList();
System.Collections.ArrayList listFieldName = new System.Collections.ArrayList();
for (int i = 0; i < gv.Columns.Count; i++)
{
if (gv.Columns[i].Visible)
{
listCaption.Add(gv.Columns[i].Caption);
listFieldName.Add(gv.Columns[i].FieldName);
}
}
//将ArrayList 转换成 一维数组
string[] captions = (string[])listCaption.ToArray(typeof(string));
string[] fieldName =(string[]) listFieldName.ToArray(typeof(string));
//推荐使用List<> 因为ArrayList转换时会装、拆箱,影响效率
//List<string> list = new List<string>();
//list.Add("aa");
//string[] aaa =list.ToArray(); str=DtToExcel(dt,captions,fieldName,sheetName,isOpen);
}
return str;
}
#endregion

调用(举例):

 string str =Functionjsj.GvToExcel(gridView1, "学生信息", true);
if (str.Length > 0) {
MessageBox.Show(str, System.Windows.Forms.Application.ProductName);
return;
}
//说明  导出的表为 dt表中gridview1显示的列的集合
 string str = Functionjsj.GvToExcel(dt,gridView1, "学生信息", true);
if (str.Length > 0)
{
MessageBox.Show(str, System.Windows.Forms.Application.ProductName);
return;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

DevExpress GridControl GridView 导出到 Excel 类的更多相关文章

  1. asp.net教程:GridView导出到Excel或Word文件

    asp.net教程:GridView导出到Excel或Word文件</ br> 在项目中我们经常会遇到要求将一些数据导出成Excel或者Word表格的情况,比如中国移动(我是中国移动用户) ...

  2. GridView导出成Excel字符"0"丢失/数字丢失的处理方式 收藏

    GridView导出成Excel字符"0"丢失/数字丢失的处理方式 收藏 GridView 导出成Excel文件,这个代码在网上比较多.但是发现存在一个问题,导出的数据中如果有&q ...

  3. DevExpress XtraGrid 数据导出导入Excel

    // <summary> /// 导出按钮 /// </summary> /// <param name="sender"></param ...

  4. DataTable 导出到 Excel 类

    底层类: #region DataTable 导出到 Excel /// <summary> /// DataTable 导出到 Excel /// </summary> // ...

  5. DevExpress.GridControl.gridView的一些注意

    1.DevExpress控件组中的GridControl控件不能使横向滚动条有效.现象:控件中的好多列都挤在一起,列宽都变的很小,根本无法正常浏览控件单元格中的内容. 解决: gridView1.Op ...

  6. Gridview导出到Excel

    #region #导出到Excel     protected void Button2_Click(object sender, EventArgs e)     {         Respons ...

  7. WinForm------如何将GridControl数据导出到Excel

    转载: http://www.cnblogs.com/xiaofengfeng/archive/2011/11/22/2258906.html 代码: SaveFileDialog saveFileD ...

  8. DevExpress gridcontrol gridView主从表折叠/展开显示

    在使用报表的时候,有很多需要主从表一起显示,从表不需要另外弹窗显示明细,反而直接显示在主表下方.如图所示: 第一次做这个功能,主从表显示,从表列隐藏,从表单元格点击事件这三个功能点花费了很多时间,在网 ...

  9. devExpress GridControl gridView笔记

    gridView1.Appearance.EvenRow.BackColor = Color.FromArgb(, , , ); gridView1.Appearance.OddRow.BackCol ...

随机推荐

  1. pow(x,y):返回x的y次幂

    >>> pow(2,3) 8 >>> pow(2,5) 32 >>> pow(2,8) 256 另外一种求x的y次幂的方法: >>&g ...

  2. ireport 在 AIX Linux websphere下的字体安装

    首先,ireport在linux下有些时候是正常的,而有些时候却不正常,只要是汉字就出不来的情况我今天是遇到了. ireport在Linux下不显示中文汉字的解决方法: 将字体文件(后缀名必须是ttf ...

  3. Unity3D研究院之在把代码混淆过的游戏返混淆回来

    最近一直在找如何在MAC上混淆Android的DLL,至今没能找到合适的,有大神知道记得告诉我喔.今天群里有人说了一个混淆代码和返混淆代码的工具de4dot ,不查不知道一查吓一跳.这玩意可以把别人混 ...

  4. 不改变中间层,如何玩转 .NET 的远程处理功能?

    原文链接: https://msdn.microsoft.com/enus/library/aa289846(v=vs.71).aspx Visual Studio .NET 2003 该方案展示了传 ...

  5. http://www.ruanyifeng.com/blog/2011/09/restful

    http://www.ruanyifeng.com/blog/2011/09/restful

  6. HDU 4288 Coder 【线段树+离线处理+离散化】

    题意略. 离线处理,离散化.然后就是简单的线段树了.需要根据mod 5的值来维护.具体看代码了. /* 线段树+离散化+离线处理 */ #include <cstdio> #include ...

  7. prim(与边无关,适合稠密的图,o(n^2))---还是畅通工程

    题目1017:还是畅通工程 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1653 解决:838 题目描述:     某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离.省政府“ ...

  8. C#中如何生成矢量图

    主要的功能就是使用C#画矢量图,然后导出到Word.Excel.Powerpoint中,并且能够再次被编辑.以下是解决过程: 首先应该确定在Office文档中可编辑图形使用的格式:学习了相关资料,了解 ...

  9. 【HDOJ】1356 The Balance

    扩展欧几里得的应用. /* 1356 */ #include <iostream> #include <sstream> #include <string> #in ...

  10. libvlc 双击,鼠标事件消息响应

    基于vlc 2.1 动态库实现接收双击消息的接收,使双击vlc播放画面可以全屏显示. 需要其他版本的vlc可以与我联系(有偿进行修改) 下载地址:http://download.csdn.net/de ...