码迷,mamicode.com
首页 > 其他好文 > 详细

DevExpress- GridControl数据导出到EXCEL

时间:2015-05-21 10:39:10      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:

将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>

DevExpress- GridControl数据导出到EXCEL

标签:

原文地址:http://www.cnblogs.com/GISRSMAN/p/4518994.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!