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 ...
随机推荐
- DEPRECATED: Use of this script to execute hdfs command is deprecated.
DEPRECATED: Use of this script to execute hdfs command is deprecated. 本人安装的hadoop版本是2.4.0的,但每次执行命令时都 ...
- 增加Android可用内存
In the development of TV applications, especially when dealing with images were more likely to feel ...
- java程序执行时,JVM内存
高淇 java 31集 类代码,static,常量池到方法区 (常量池会在类之间共享) 局部变量 到栈 对象到 堆 高淇 32集 增加一个computer类
- Altium快捷键
M快捷键 PCB快捷键 编辑 视图
- JAVA实现word doc docx pdf excel的在线浏览 - 仿百度文库 源码
我们具体实现思路是这样的 首先下载并安装openoffice和swftools openoffice下载地址:http://www.openoffice.org/download/index.html ...
- hdu4597Play Game(记忆化)
链接 通化邀请赛的题 貌似不怎么难 记忆化DP 状态方程类似于2维的 只是变成了4维 每次有四种方向去搜 取最棒的 判断好边界条件 #include <iostream> #includ ...
- cat ,more, Less区别
使用cat more less都可以查看文本内容,但是它们三者有什么区别呢?more和less的功能完全重复吗?以下是我个人的总结,欢迎大家一起来分享 cat 连续显示.查看文件内容mo ...
- AHOI2009最小割
1797: [Ahoi2009]Mincut 最小割 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1072 Solved: 446[Submit] ...
- combobox的下拉框高度怎样设计合理
orry,代码如下$.extend($.fn.combobox.methods, { autoHeight : function (jq) {//combobox扩展,自动调整高度 ...
- apache开源项目--thrift
Thrift 是一个软件框架(远程过程调用框架),用来进行可扩展且跨语言的服务的开发.它结合了功能强大的软件堆栈和代码生成引 擎,以构建在 C++, Java, Python, PHP, Ruby, ...