DevExpress GridControl GridView 导出到 Excel 类
说明:
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 类的更多相关文章
- asp.net教程:GridView导出到Excel或Word文件
asp.net教程:GridView导出到Excel或Word文件</ br> 在项目中我们经常会遇到要求将一些数据导出成Excel或者Word表格的情况,比如中国移动(我是中国移动用户) ...
- GridView导出成Excel字符"0"丢失/数字丢失的处理方式 收藏
GridView导出成Excel字符"0"丢失/数字丢失的处理方式 收藏 GridView 导出成Excel文件,这个代码在网上比较多.但是发现存在一个问题,导出的数据中如果有&q ...
- DevExpress XtraGrid 数据导出导入Excel
// <summary> /// 导出按钮 /// </summary> /// <param name="sender"></param ...
- DataTable 导出到 Excel 类
底层类: #region DataTable 导出到 Excel /// <summary> /// DataTable 导出到 Excel /// </summary> // ...
- DevExpress.GridControl.gridView的一些注意
1.DevExpress控件组中的GridControl控件不能使横向滚动条有效.现象:控件中的好多列都挤在一起,列宽都变的很小,根本无法正常浏览控件单元格中的内容. 解决: gridView1.Op ...
- Gridview导出到Excel
#region #导出到Excel protected void Button2_Click(object sender, EventArgs e) { Respons ...
- WinForm------如何将GridControl数据导出到Excel
转载: http://www.cnblogs.com/xiaofengfeng/archive/2011/11/22/2258906.html 代码: SaveFileDialog saveFileD ...
- DevExpress gridcontrol gridView主从表折叠/展开显示
在使用报表的时候,有很多需要主从表一起显示,从表不需要另外弹窗显示明细,反而直接显示在主表下方.如图所示: 第一次做这个功能,主从表显示,从表列隐藏,从表单元格点击事件这三个功能点花费了很多时间,在网 ...
- devExpress GridControl gridView笔记
gridView1.Appearance.EvenRow.BackColor = Color.FromArgb(, , , ); gridView1.Appearance.OddRow.BackCol ...
随机推荐
- 什么是 DevSecOps?系列(一)
什么是 DevSecOps? 「DevSecOps」 的作用和意义建立在「每个人都对安全负责」的理念之上,其目标是在不影响安全需求的情况下快速的执行安全决策,将决策传递至拥有最高级别环境信息的人员. ...
- android usb host 读写USB设备
自android3.1以后android增加了操作USB设备的API. 官网地址:http://developer.android.com/guide/topics/connectivity/usb/ ...
- protel dxp快捷键大全
enter——选取或启动 esc——放弃或取消f1——启动在线帮助窗口tab——启动浮动图件的属性窗口pgup——放大窗口显示比例pgdn——缩小窗口显示比例end——刷新屏幕del——删除点取的元件 ...
- Spring事务传播特性的浅析——事务方法嵌套调用的迷茫
Spring事务传播机制回顾 Spring事务一个被讹传很广说法是:一个事务方法不应该调用另一个事务方法,否则将产生两个事务.结果造成开发人员在设计事务方法时束手束脚,生怕一不小心就踩到地雷. 其实这 ...
- .NET(C#)调用webService获取客户端IP地址所属区域(非异步)
功能描述: 此接口用于获取客户端访问的IP的地址所属的区域(国家,城市等).通过输入IP地址查询国家.城市.所有者等信息.没有注明国家的为中国输入参数:IP地址(自动替换 " ." ...
- Android 实用代码七段(二)
声明 欢迎转载,但请保留文章原始出处:) 博客园:http://www.cnblogs.com 农民伯伯: http://over140.cnblogs.com 正文 一.获取应用程序下所有Acti ...
- 通过Java SE 7自带的监控服务(WatchService API)实现类似.NET FileWatcher的功能
Java SE 7 Tutorial中增加了一个监控目录变更情况的示例,用于介绍其新发布的WatchService API. 但对于用惯了.NET FileWatcher的用户而言,如果用于项目我认为 ...
- mat之一--eclipse安装Memory Analyzer
工欲善其事必先利其器,先开始更新下eclipse,顺便装下工具软件.那么简要的写写怎么从头安装Memory Analyzer Memory Analyzer (Eclipse MAT)是一个跨平台的开 ...
- [转]ASP.NET MVC 入门7、Hellper与数据的提交与绑定
ASP.NET MVC提供了很多Hellper的方法,Hellper就是一些生成HTML代码的方法,方便我们书写HTML代码(有一部分的朋友更喜欢直接写HTML代码).我们也可以利用.NET 3.5的 ...
- Velocity介绍
Velocity是一个基于Java的模版引擎,它是一个简单并且功能强大的开发工具,你可以非常容易地创建和呈现出.在这个介绍当中,我们希望可以给出一个使用基本Velocity的概述. 使用Velocit ...