DevExpress- GridControl数据导出到EXCEL

将DevExpress-GridControl数据导出到EXCEL,目前用过两种,一为利用GridControl函数操作,一为用流(IO)操作.区别在于前者可以将你在GridControl所见格式全部导入EXCEL,比如有时候我们在Bands里面拖拽出来的Title样式,后者最大优点在于速度很快,亲测10W条数据导出只需2秒左右;

?
?

No.1:用GridControl函数导出数据到EXCEL,建议设置Options下OptionsPrint—AutoWidth=False,使导出后单元格宽度根据内容长度自动调整.

SaveFileDialog fileDialog = new SaveFileDialog();

fileDialog.Filter = "Excel文件|*.xls;";

fileDialog.FileName = this.Text + DateTime.Now.ToString("yyMMddHHmm");

if (fileDialog.ShowDialog() == DialogResult.OK)

{

??gridControl1.ExportToXls(fileDialog.FileName);

??XtraMessageBox.Show("操作成功!", "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);

}

?
?

?
?

No.2:用流将数据导入EXCEL

#region 用流将数据导入到Excel中

????????????????public static
void DataGridToExcel(DataTable dt, GridView dgv, string orderDateTime, string title)

????????????????{

????????????????????????SaveFileDialog saveFileDialog = new SaveFileDialog();

????????????????????????saveFileDialog.Filter = "Execl (*.xls)|*.xls| Execl (*.xlsx)|*.xlsx";

????????????????????????saveFileDialog.FilterIndex = 0;

????????????????????????saveFileDialog.RestoreDirectory = true;

????????????????????????saveFileDialog.CreatePrompt = true;

????????????????????????saveFileDialog.Title = "导出Excel文件到";

????DateTime now = SystemManage.GetTimeNow();

??saveFileDialog.FileName = title + orderDateTime;

????DialogResult dr = saveFileDialog.ShowDialog();

????????????????????????if (dr == DialogResult.Cancel)

????????????????????????????????return;

????????????????????????Stream myStream;

????myStream = saveFileDialog.OpenFile();

????????????????????????string fileName = saveFileDialog.FileName;

????????????????????????if (fileName == "")

????????????????????????{

XtraMessageBox.Show("请输入文件名!", "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);

????????????????????????????????return;

????????????????????????}

????????????????????????StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding("gb2312"));

????????????????????????string str = "";

????????????????????????try

????????????????????????{

????????????????????????????????//写标题

????????????????????????????????string stc = title + orderDateTime;

sw.WriteLine(stc);

????????????????????????????????for (int i = 0; i <= dgv.Columns.Count; i++)

????????????????????????????????{

????????????????????????????????????????if (i == 0)

????????????????????????????????????????{

????????????????????????????????????????????????str += "序号";

????????????????????????????????????????}

????????????????????????????????????????else

????????????????????????????????????????{

????????????????????????????????????????????????if (dgv.Columns[i - 1].Visible == true)

????????????????????????????????????????????????{

????????????????????????????????????????????????????????str += "\t";

????????????????????????????????????????????????????????str += dgv.Columns[i - 1].Caption;

????????????????????????????????????????????????}

}

????????????????????????????????}

sw.WriteLine(str);

????????????????????????????????int count = 0;

????????????????????????????????//写内容

????????????????????????????????for (int j = 0; j < dt.Rows.Count; j++)

????????????????????????????????{

????????????????????????????????????????count++;

????????????????????????????????????????string tempStr = "";

????????????????????????????????????????for (int k = 0; k < dt.Columns.Count + 1; k++)

????????????????????????????????????????{

????????????????????????????????????????????????if (k == 0)

????????????????????????????????????????????????{

????????????????????????????????????????????????????????tempStr = count.ToString();

????????????????????????????????????????????????}

????????????????????????????????????????????????else

????????????????????????????????????????????????{

????????????????????????????????????????????????????????if (dgv.Columns[k - 1].Visible == true)

????????????????????????????????????????????????????????{

????????????????????????????????????????????????????????????????tempStr += "\t";

????????????????????????????????????????????????????????????????tempStr += dt.Rows[j][k - 1].ToString().Trim();

}

????????????????????????????????????????????????}

}

????????????????????????????????????????sw.WriteLine(tempStr);

}

????????????????????????????????sw.Close();

????????????????????????????????sw.Dispose();

????????????????????????????????myStream.Close();

????????????????????????????????myStream.Dispose();

XtraMessageBox.Show("操作成功!", "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);

????????????????????????}

????????????????????????catch (Exception e)

????????????????????????{

XtraMessageBox.Show("操作失败!", "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);

????????????????????????}

????????????????????????finally

????????????????????????{

????????????????????????????????sw.Close();

????????????????????????????????myStream.Close();

}

????????????????}

?????????????
?

#endregion

?
?

OK,调用就简单了:

ClassName.DataGridToExcel(dt, gridView1, SystemManage.GetTimeNow().ToString("yyMMddHHmmss"), this.Text + "报表");

?
?

源文档 <http://www.liaoyong.name/?p=202>

时间: 2024-10-18 23:12:32

DevExpress- GridControl数据导出到EXCEL的相关文章

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

DevExpress XtraGrid 数据导出导入Excel

// <summary> /// 导出按钮 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void FrmAppItem_F9ClickHandler(object sender, EventArgs e) { string strName = "";

Dev GridControl数据导出格式问题

环境:DevExpress9.3,Vs2008 DevExpress的GridControl提供方便的数据导出到Excel功能,导出中用户可以根据GridControl的格式进行导出(ExportToXls(Stream stream)方法). 1.如果表中存在一列为字符类型,但是存放的为数字,那么按照GridControl的格式导出到Excel中便会产生"将存储为文本的数字转换为数字"的问题提示,必须在Excel中把这些值转化为数字,才可进行计算等. 对于这种方式的处理方法很简单,只

支持将数据导出到Excel文档的时候设置单元格格式的.NET控件Spire.DataExport

Spire.DataExport for .NET是e-iceblue公司推出的一款数据导出类.NET控件.作为一款专业的数据导出控件,Spire.DataExport for .NET可以帮助开发人员轻松快速的从各种主流数据库中导出数据并存储于各种文件格式中.他支持从SQL Command, DataTable,ListView中导出数据并存储于MS Excel,MS Word, HTML, XML, PDF, MS Access, DBF, SQL Script, SYLK, DIF, CS

数据导出至Excel文件--好库编程网http://code1.okbase.net/codefile/SerializeHelper.cs_2012122018724_118.htm

using System; using System.IO; using System.Data; using System.Collections; using System.Data.OleDb; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; /// <summary> /// Excel操作类 /// </summary> /// Microsoft Excel 11.0 Obj

tablib把数据导出为Excel、JSON、CSV等格式的Py库(写入数据并导出exl)

#tablib把数据导出为Excel.JSON.CSV等格式的Py库 #python 3 import tablib #定义列标题 headers = ('1列', '2列', '3列', '4列', '5列') #需写入的数据,按照一行一行的输入 #元组数据的个数必须和列数一致 data = [('23','23','34','23','34'),('sadf','23','sdf','23','fsad')] #写入数据 mylist = tablib.Dataset(*data, head

Delphi 数据导出到Excel

好多办公软件特别是财务软件,都需要配备把数据导出到Excel,下面就来介绍两种数据导出方法 1.ADODB导出查询结果(此方法需要安装Excel) 2.二维表数据导出(根据Excel文件结构生成二进制文件流,不需要安装Excel) 3.如果涉及到复杂表头的(例如合并字段等),未做研究,下面也没介绍相关资料,请止步. 第一种,ADODB导出查询结果(此方法需要安装Excel) //uses DB, ADODB, ComObj, ComCtrls, excel2000, StdCtrls, adoi

Qt中将QTableView中的数据导出为Excel文件

如果你在做一个报表类的程序,可能将内容导出为Excel文件是一项必须的功能.之前使用MFC的时候我就写过一个类,用于将grid中的数据导出为Excel文件.在使用了QtSql模块后,我很容易的将这个类改写应用在Qt程序中.类的名字叫“ExportExcelObject”.使用起来很简单: [cpp] view plaincopy // 1. declare an object // – fileName Excel 文件路径 // – sheetName Excel 工作表(sheet)名称 /

将数据库的数据导出到excel中

这篇文章主要介绍了asp中把数据导出为excel的2种方法:分别用excel组件.文件组件实现,需要的朋友可以参考下.我们在做项目的时候经常要将数据库的数据导出到excel中,很多asp用户并不知道怎么写.这里总结了两种方法来导出excel,希望能帮到大家. 方法一:用excel组件 方法二:使用文件组件 可以看出,第一种方法是直接导出的是excel文件,而第二张方法是到处的是文本文件,只不过后缀名改成了xls. 然后看起来就是excel了. 经过对比第一种方法的效率没有第二种方法的效率高,而且