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

2、我手动对存储的数字进行了处理,对整数采用千分位显示(intValue.ToString("###,###")方法),对小数采用千分位两位小数显示,不足两位小数的用0补足(String.Format("{0:N}", doubleValue)方法或者String.Format("{0:N2}",doubleValue)方法)。这种方式已经将存储的数字转化为字符串了,如果该列数值类型,则会导致赋值错误,因此列只可以是字符类型,同样导致按照GridControl的格式导出到Excel中便会产生"将存储为文本的数字转换为数字"的问题。
对于这中方法,我们可以通过GridControl自带的数据格式进行解决。下面可以通过两种方法进行实现。
(1)通过代码进行实现
对于整数:
gridViewTest.Columns[i].DisplayFormat.FormatType = FormatType.Numeric;
gridViewTest.Columns[i].DisplayFormat.FormatString = "#,###";
对于小数:
gridViewTest.Columns[i].DisplayFormat.FormatType = FormatType.Numeric;
gridViewTest.Columns[i].DisplayFormat.FormatString = "#,###.00";
(1)通过设计窗体进行实现
对于整数:

对于小数:

下面附导出到Excel的代码实现:
1: private void btnExport_Click(object sender, EventArgs e)
2: {
3: saveFileDialog1.FileName = "";
4: saveFileDialog1.Filter = "Excel文件(.xls)|*.xls";
5: saveFileDialog1.FileName = "测试文档";
6: saveFileDialog1.OverwritePrompt = false; //已存在文件是否覆盖提示
7: if (saveFileDialog1.ShowDialog() != DialogResult.OK)
8: return;
9: //已存在文件是否覆盖提示
10: while (System.IO.File.Exists(saveFileDialog1.FileName) &&
11: DevExpress.XtraEditors.XtraMessageBox.Show("该文件名已存在,是否覆盖?",
12: "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes)
13: {
14: if (saveFileDialog1.ShowDialog() != DialogResult.OK)
15: return;
16: }
17: if (saveFileDialog1.FileName != "")
18: {
19: try
20: {
21: System.IO.FileStream fs =
22: (System.IO.FileStream)saveFileDialog1.OpenFile();
23: this.gridControlTest.ExportToXls(fs);
24: fs.Close();
25: DevExpress.XtraEditors.XtraMessageBox.Show("数据导出成功!", "提示");
26: }
27: catch (Exception ex)
28: {
29: if (ex.Message.Contains("正由另一进程使用"))
30: {
31: DevExpress.XtraEditors.XtraMessageBox.Show("数据导出失败!文件正由另一个程序占用!", "提示");
32: }
33: else
34: DevExpress.XtraEditors.XtraMessageBox.Show("数据导出失败!数据量过大,请分别统计再导出!", "提示");
35: }
36: }
37: }
Dev GridControl数据导出格式问题的更多相关文章
- WinForm------如何将GridControl数据导出到Excel
转载: http://www.cnblogs.com/xiaofengfeng/archive/2011/11/22/2258906.html 代码: SaveFileDialog saveFileD ...
- DEV GridControl打印 导出
/// <summary> /// 打印 /// </summary> /// <param name="sender"></param& ...
- Dev GridControl数据修改后实时更新数据源
1: /// <summary> 2: /// 嵌入的ComboxEdit控件选择值变化事件 3: /// </summary> 4: /// <param n ...
- Dev GridControl数据修改后实时更新数据源(转)
1: /// <summary> 2: /// 嵌入的ComboxEdit控件选择值变化事件 3: /// </summary> 4: /// <param nam ...
- 使用NPOI将数据导出为word格式里的table
开发环境:VS2013+MySQL5.5+EF6+NPOI2.0.6 格式:WinForm+CodeFirst PS:vs2013的CodeFirst很方便了啊 CodeFirst方式就不再赘述了. ...
- .net解决数据导出excel时的格式问题
在项目中一般都需要将报表数据导出到EXCEL中,但经常出现导出长串数据(如身份证)到EXCEL中后显示为科学计数法的格式,或者报表中显示为001的数据导出到Excel后成了1的格式. 下面简单介绍一下 ...
- C# DevExpress 的gridControl或gridView数据导出失败解决方法
来自:http://blog.csdn.net/lybwwp/article/details/8049464 谢谢 在使用DevExpress 的GridPanel控件的时候出现了一个莫名其妙的现象, ...
- DEV GridControl导出到Excel或打印
//方法1SaveFileDialog fileDialog = new SaveFileDialog(); fileDialog.Title = "导出Excel"; fileD ...
- C# dev GridControl绑定数据不能显示
如题, dev GridControl绑定数据不能显示时可检查数据操作顺序 view = advBandedGridView1 as AdvBandedGridView; //第1 this.advB ...
随机推荐
- selenium下拉框选择
下拉框结构如下,我需要选择的是new: html为: <select id="condition_type" name="condition_type" ...
- JS--事件模块
一.JS event 的浏览器兼容 说到JS事件,不能不先讲一下事件流 1 事件流的定义:事件流是指从页面中接收事件的顺序 如下图所示,假设有四个圆层叠在一起,如果我们单击图中最里面的那个圆,那么我们 ...
- SIFT定位算法关键步骤的说明
1. SIFT算法中一些符号的说明 $I(x,y)$表示原图像. $G(x,y,\sigma)$表示高斯滤波器,其中$G(x,y,\sigma) = \frac{1}{2\pi\sigma^2}exp ...
- Requests库上传文件时UnicodeDecodeError: 'ascii' codec can't decode byte错误解析
在使用Request上传文件的时候碰到如下错误提示: 2013-12-20 20:51:09,235 __main__ ERROR 'ascii' codec can't decode byte 0x ...
- Socket的三个功能类TCPClient、TCPListener 和 UDPClient (转)
应用程序可以通过 TCPClient.TCPListener 和 UDPClient 类使用传输控制协议 (TCP) 和用户数据文报协议 (UDP) 服务.这些协议类建立在 System.Net.So ...
- JS中数组Array的用法
js数组元素的添加和删除一直比较迷惑,今天终于找到详细说明的资料了. var arr = new Array(); // 初始化数组arr[0] = "aaa";arr[1] = ...
- linux下一对多socket服务器端多线程泄露问题
线程创建多了,没有释放.导致内存泄露... int main() { int len; int on=1; // pMachList = CreateEmptyLinklist(); DataBase ...
- [EventBus源码解析] EventBus.register 方法详述
前情概要 在上一篇中,介绍了EventBus的基本使用方法,以及一部分进阶技巧.本篇及以后的几篇blog将会集中解析EventBus.java,看看作者是如何优雅地实现这个看似简单的事件分发/接收机制 ...
- 关于sublime text2
转自:http://www.qianduan.net/essential-to-sublime-the-text-2-plugins.html Sublime Text 2是一个轻量.简洁.高效.跨平 ...
- PIC32MZ tutorial -- Input Capture
Today I accomplish a simple application for PIC32MZ EC Starter Kit. This application uses Input Capt ...