环境:DevExpress9.3,Vs2008

DevExpress的GridControl提供方便的数据导出到Excel功能,导出中用户可以根据GridControl的格式进行导出(ExportToXls(Stream stream)方法)。

1、如果表中存在一列为字符类型,但是存放的为数字,那么按照GridControl的格式导出到Excel中便会产生"将存储为文本的数字转换为数字"的问题提示,必须在Excel中把这些值转化为数字,才可进行计算等。

对于这种方式的处理方法很简单,只要把GridControl绑定的数据源的这一列的数据类型修改为数值类型即可。

Dev 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)通过设计窗体进行实现

对于整数:

Dev GridControl数据导出格式问题

对于小数:

Dev GridControl数据导出格式问题

下面附导出到Excel的代码实现:

object sender, EventArgs e)
   2: {
;
;
;
//已存在文件是否覆盖提示
if (saveFileDialog1.ShowDialog() != DialogResult.OK)
return;
//已存在文件是否覆盖提示
while (System.IO.File.Exists(saveFileDialog1.FileName) && 
, 
, MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes)
  13:     {
if (saveFileDialog1.ShowDialog() != DialogResult.OK)
return;
  16:     }
)
  18:     {
try
  20:         {
  21:             System.IO.FileStream fs =
  22:                (System.IO.FileStream)saveFileDialog1.OpenFile();
this.gridControlTest.ExportToXls(fs);
  24:             fs.Close();
);
  26:         }
catch (Exception ex)
  28:         {
))
  30:             {
);
  32:             }
else
);
  35:         }
  36:     }
  37: }

相关文章:

  • 2022-02-22
  • 2022-12-23
  • 2021-11-02
  • 2022-12-23
  • 2021-07-28
  • 2021-08-02
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-07-05
  • 2022-12-23
  • 2022-01-09
  • 2021-10-15
  • 2022-12-23
相关资源
相似解决方案