CxGrid导出Excel时清除颜色的设置

(2011-04-25 16:33:23)

标签:

it

分类: Delphi

http://www.radxe.com/?p=170

cxgrid导出到Excel是“所见即所得”模式的,应用程序中显示的颜色在导出时也会被设置到Excel,但很多时候导出的Excel是期望不包含色彩信息的,所以必须在导出时将cxgrid的颜色设置清除。cxgrid表格各个部分的颜色可以通过在view的styles中设置,未设置styles时cxgrid会使用默认色(灰色)渲染bandheader,footer等部分。所以要清除颜色除了将定义了style的表格部分的style清空外,还得为bandheader,footer等使用了默认色的部分设置一个合适的style。

以下是范例代码:

//导出Excel
procedure TFrmBaseReport.SpbExcelClick(Sender: TObject);
begin
  try
    clearStyles;
    exportCXGridToExcel;
  finally
    resetStyles
  end;
end;
 
//清除样式
procedure TFrmBaseReport.clearStyles;
begin
  cxView.Styles.BandHeader := stWhite;
  cxView.Styles.Header := nil;
  cxView.Styles.ContentOdd := nil;
  cxView.Styles.ContentEven := nil;
  cxView.Styles.Footer := stWhite;
end;
 
//重置样式
procedure TFrmBaseReport.resetStyles;
begin
  cxView.Styles.BandHeader := stBandHeader;
  cxView.Styles.Header := stHeader;
  cxView.Styles.ContentOdd := stContentOdd;
  cxView.Styles.ContentEven := stContentEven;
  cxView.Styles.Footer := stFooter;
end;
 
//cxgrid数据导出到Excel
procedure TFrmBaseReport.exportCXGridToExcel(infoEmpty:boolean);
var
  fileName : String;
begin
  cxView.OptionsView.Header := false;
  try
    fileName := getTempFileName;
    ExportGrid4ToExcel(fileName,cxGrid);
    shellOpen(fileName+FILE_EXT_XLS);
  finally
    cxView.OptionsView.Header := true;
  end;
end;

备注:stBandHeader,stHeader,stContentOdd,stContentEven,stFooter,stWhite是表格各个部分对应的配色方案,可以TcxCustomGridView.styles中设置,stWhite是白色背景黑色文字的配色方案。Dev官网上对这个问题给出的方案是通过应用两个样式表实现的(TcxCustomGridView.Styles.StyleSheet,一个保存应用程序中外观的配色,另外一个保存导出时的配色),与上述方法类似。

CxGrid导出Excel时清除颜色的设置的更多相关文章

  1. CRM 报表导出excel时指定sheet名

    如图所示,设置PageName即可: 这样导出excel时,sheet的名就有了:

  2. 用POI导出excel时,较长的数字不想被自动变为科学计数法的解决方式(转)

    做过很多次导出excel了.都碰到一个问题,内容里如果包含一个比较长的数字,比如订单号“2546541656596”,excel会自动变成科学计数法... 弄过好几次都没有解决,最近又要导出excel ...

  3. java导出excel时合并同一列中相同内容的行

    一.有时候导出Excel时需要按类别导出,一大类下好几个小类,小类下又有好几个小小类,就像下图: 要实现这个也不难, 思路如下:按照大类来循环,如上就是按照张江校区.徐汇校区.临港校区三个大类循环,然 ...

  4. .net解决数据导出excel时的格式问题

    在项目中一般都需要将报表数据导出到EXCEL中,但经常出现导出长串数据(如身份证)到EXCEL中后显示为科学计数法的格式,或者报表中显示为001的数据导出到Excel后成了1的格式. 下面简单介绍一下 ...

  5. C#导出 Excel 时, 生成 CheckBox 控件

    在使用 Microsoft.Office.Interop.Excel 组件导出Excel 表格时,要把导出前的  CheckBox 控件一同导出到 excel 表格中,对于这个功能 看似很简单,但 M ...

  6. cxGrid导出Excel货币符号问题

    cxGrid导出到Excel,对于Currency类型总是加上了货币符号,可以修改导出文件设置来去掉: 在cxXLSExport.pas文件中,修改: procedure TcxXLSExportPr ...

  7. PHP导出excel时数字变为科学计数的解决方法

    在数据导出到excel时数字格式不对,一般分为以下两种情况. 1.excel单元格设置长度不够 解决方法: //在excel.php文件中 $objActSheet = $objPHPExcel-&g ...

  8. jsp 页面导出excel时字符串数字变成科学计数法的解决方法

    web导出excel数据格式化 原文地址:http://www.cnblogs.com/myaspnet/archive/2011/05/06/2038490.html   当我们把web页面上的数据 ...

  9. 导出excel时,以form方式提交json数据

    今天在写项目时写到一个excel的导出,开始想用ajax请求后台后导出,但发现ajax会有返回值,而且ajax无法直接输出文件,而后台的excel导出方法已经封装好,不方便修改. 就改用了提交的方式f ...

随机推荐

  1. conductor APIs

    任务和工作流元数据 端点 描述 输入 GET /metadata/taskdefs 获取所有任务定义 N / A GET /metadata/taskdefs/{taskType} 检索任务定义 任务 ...

  2. MongoDB服务无法启动,发生服务特定错误:100

    问题:MongoDB服务无法启动,发生服务特定错误:100 原因:没有正常关闭mongod服务,导致mongod被锁 解决方案:进入db文件夹,删除mongod.lock文件,然后重新启动服务即可

  3. go,函数作为参数类型

    package main import "fmt" type testInt func(int) bool // 声明了一个函数类型 func isOdd(integer int) ...

  4. 《Visual Basic开发实战1200例》包括第I卷、第II卷共计1200个例子,本书是第I卷,共计600个例子。

    本书以开发人员在项目开发中经常遇到的问题和必须掌握的技术为中心,介绍了应用Visual Basic进行程序开发各个方面的知识和技巧.主要包括基础知识.窗体界面设计.控件应用等.全书分6篇20章,共计6 ...

  5. ios runtime简单实用(添加动态属性)

    #import "Person.h" @interface Person (PersonCategory)   // 添加Person中没有的name属性 @property (n ...

  6. boost x64 lib

    libboost_atomic-vc150-mt-gd-x64-1_66.liblibboost_atomic-vc150-mt-s-x64-1_66.liblibboost_atomic-vc150 ...

  7. iOS 管理库 Carthage 安装以及使用

    https://blog.csdn.net/Mazy_ma/article/details/70185547

  8. TEXTMETRICW 结构记录

    if( flags == DT_RIGHT ) { SIZE Size = {,}; TEXTMETRICW temp; if (font->GetTextMetricsW(&temp) ...

  9. 基于TCP的套接字

    tcp服务端 1 ss = socket() #创建服务器套接字 2 ss.bind() #把地址绑定到套接字 3 ss.listen() #监听链接 4 inf_loop: #服务器无限循环 5 c ...

  10. C语言字符串操作函数实现

    1.字符串反转 – strRev void strRev(char *str) { assert(NULL != str);   int length=strlen(str); ; while(end ...