说明:

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. mysql procedure返回多数据集

    返回多数据集写法:第一种 DROP PROCEDURE IF EXISTS `p_query_user` ; DELIMITER // CREATE PROCEDURE p_query_user( p ...

  2. js amd

    http://www.ruanyifeng.com/blog/2012/10/asynchronous_module_definition.html http://www.adequatelygood ...

  3. unity 导出 android安装包配置方案

    原地址:http://blog.csdn.net/u012085988/article/details/17393111 1.jdk本人安装的是win32版的(虽然系统是64位的.但听说装64位的导出 ...

  4. POJ 3352 Road Construction (边双连通分量)

    题目链接 题意 :有一个景点要修路,但是有些景点只有一条路可达,若是修路的话则有些景点就到不了,所以要临时搭一些路,以保证无论哪条路在修都能让游客到达任何一个景点 思路 :把景点看成点,路看成边,看要 ...

  5. MySQL查询表结构的SQL小结

    mysql查看表结构命令,如下: desc 表名; show columns from 表名; describe 表名; show create table 表名; 示例: use testDB; # ...

  6. Android EditText的常用技巧

    1.       设定 EditText 的滚动条.对齐方式.行数.和提示 (hint) 及其颜色 在布局文件,比如 main.xml 中,增加 < EditText android:id =  ...

  7. ActionBar官方教程(5)ActionBar的分裂模式(底部tab样式),隐藏标题,隐藏图标

    Using split action bar Split action bar provides a separate bar at the bottom of the screen to displ ...

  8. 【HDOJ】3337 Guess the number

    神一样的题目.简言之,利用手段获得测试用例的第一行,输出结果.很显然利用wa, TLE, OLE等judge status可以获得测试用例.因此,果断Python写一个acm提交机器人.依赖lxml库 ...

  9. C#使用Word中的内置对话框实例

    本文实例讲述了C#使用Word中的内置对话框的方法,分享给大家供大家参考.具体实现方法如下: 使用 Microsoft Office Word 时,有时需要显示用户输入对话框.虽然可以创建自己的对话框 ...

  10. MVC Action 返回类型[转]

    一.         ASP.NET MVC 1.0 Result 几何? Action的返回值类型到底有几个?咱们来数数看. ASP.NET MVC 1.0 目前一共提供了以下十几种Action返回 ...