捐赠 | 广告 | 注册 | 发布 | 上传 | 关于我们    
  沪ICP备05001939号 DELPHI盒子 | 盒子论坛 | 盒子文章 | 盒子问答悬赏 | 最新更新 | 论坛检索 | 下载中心 | 高级搜索    
  精品专区 | 繁體中文 | 奖励公告栏 | 直通车账号登陆 | 关闭GOOGLE广告 | 临时留言    
盒子资源分类
全部展开 - 全部合拢
多表头的DBGridEH导出到Excel中
关键字:多表头 DBGridEH 导出 Excel 修改 WriteTitle
来 自:原创
平 台:Win9x,Win2k/NT 下载所需:0 火柴
深浅度:中级 完成时间:2004/7/8
发布者:xue_fg 发布时间:2004/7/8
编辑器:DELPHI7 语  种:简体中文
分 类:组件 下载浏览:611/27017
加入到我的收藏
下载错误报错
登陆以后才能下载
 用户名:
 密 码:
自动登陆(30天有效)
无图片
把自己的解决法子说一下,虽然解决的不是很完美,缺少单元格合并和字体设置。
我重写了单元DBGridEhImpExp中的函数TDBGridEhExportAsXLS.WriteTitle
希望有高手继续完善这个函数,让之最终导出的Excel格式和Elib一样。
//------------------------------------------------------------------
procedure TDBGridEhExportAsXLS.WriteTitle(ColumnsList: TColumnsEhList);
var
  i, k: Integer;
  FPTitleExpArr: TTitleExpArr;
  ListOfHeadTreeNodeList: TList;
  ColSpan, RowSpan: Integer;
  str1:String;
  L: Word;  //writestringcell
begin
  if ColumnsList.Count = 0 then
    Exit;

  if DBGridEh.UseMultiTitle then
  begin
    try
      CreateMultiTitleMatrix(DBGridEh, ColumnsList, FPTitleExpArr, ListOfHeadTreeNodeList);
      //输出除最后一行表头的内容
      for k := ListOfHeadTreeNodeList.Count - 1 downto 1 do
      begin
        for i := 0 to ColumnsList.Count - 1 do
        begin
          if THeadTreeNode(TList(ListOfHeadTreeNodeList.Items[k]).Items[i]) <> nil then
          begin
            CalcSpan(ColumnsList, ListOfHeadTreeNodeList, k, i, ColSpan, RowSpan);
            str1:=THeadTreeNode(TList(ListOfHeadTreeNodeList.Items[k]).Items[i]).Text;
            //=====================================
            L := Length(str1);
            CXlsLabel[1] := 8 + L;
            CXlsLabel[2] := FRow;
            CXlsLabel[3] := FCol;
            CXlsLabel[5] := L;
            StreamWriteWordArray(Stream, CXlsLabel);
            StreamWriteAnsiString(Stream, str1);
            if FCol = ExpCols.Count - 1 then
            begin
              Inc(FRow);
              FCol := 0;
            end
            else
              FCol:=FCol+ColSpan;
            //=====================================
          end;
        end;
      end;
      FRow := ListOfHeadTreeNodeList.Count - 1;
      FCol :=0;
      //输出最后一行表头
      for i := 0 to ColumnsList.Count - 1 do
      begin
        if THeadTreeNode(TList(ListOfHeadTreeNodeList.Items[0]).Items[i]) <> nil then
        begin
          CalcSpan(ColumnsList, ListOfHeadTreeNodeList, 0, i, ColSpan, RowSpan);
          str1:=THeadTreeNode(TList(ListOfHeadTreeNodeList.Items[0]).Items[i]).Text;
          //WriteStringCell(str1);
          //==================================
          L := Length(str1);
          CXlsLabel[1] := 8 + L;
          CXlsLabel[2] := FRow;
          CXlsLabel[3] := FCol;
          CXlsLabel[5] := L*ColSpan;
          StreamWriteWordArray(Stream, CXlsLabel);
          StreamWriteAnsiString(Stream, str1);
          if FCol = ExpCols.Count - 1 then
          begin
            Inc(FRow);
            FCol := 0;
          end
          else
            FCol:=FCol+ColSpan;
          //==================================
        end
        else
        begin
          Inc(FCol);//单云格进一
        end;
      end;
      FRow:=ListOfHeadTreeNodeList.Count;
      FCol:=0;
    finally
      for i := 0 to ListOfHeadTreeNodeList.Count - 1 do
        TList(ListOfHeadTreeNodeList.Items[i]).Free;
      ListOfHeadTreeNodeList.Free;
    end;
  end
  else   //不使用多表头
  begin
    for i := 0 to ColumnsList.Count - 1 do
    begin
      WriteStringCell(ColumnsList[i].Title.Caption);
    end;
  end;
end;
//------------------------------------------------------------------
Google
 
本站原创作品,未经作者许可,严禁任何方式转载;转载作品,如果侵犯了您的权益,请联系我们
龙脉加密锁 15元起 Grid++Report 报表 申请支付@网
 相关文章
咏南工作室dbgrideh增强版(全部源码)
hnxxcxg 2008/7/9 下+19698/浏+35581 评+28
ehlib(咏南工作室)增强版
hnxxcxg 2008/4/27 下+4464/浏+23749 评+36
给Ehlib中的DBGridEH增加自动过滤功能
solarmoon 2008/1/7 下+12706/浏+28033 评+25
EhLib 过滤功能实现示例
netrobo 2008/1/3 下+8822/浏+20983 评+4
EhLib v4.2.16 中文汉化版
netrobo 2007/12/13 下+36008/浏+37031 评+23
EhLib v4.2.16 FS
sangel 2007/12/11 下+10416/浏+17161 评+7
EhLib v4.2.12 中文汉化版 (OneFly.org 修改…
netrobo 2007/8/8 下+11615/浏+20503 评+11
EhLib v4.2.12 Full Source
fireflyer 2007/8/6 下+8735/浏+17536 评+11
Ehlib v4.1.4 显示增强
auuauu 2007/6/7 下+2974/浏+21757 评+10
EHLib安装到D2007的方法
yuaiguo 2007/4/3 下+0/浏+13968 评+10
去掉 DBLookupEh 的自动填充
chenletian 2007/2/16 下+984/浏+11774 评+3
Ehlib 自动编号及自适应列宽演示
jin_rose 2006/11/5 下+6244/浏+24739 评+20
EhLib v4.1.1 改进版 16043
uuxa 2006/7/20 下+1744/浏+20766 评+6
对 DBEhlib 控件的扩展
uuxa 2006/7/14 下+778/浏+15765 评+0
EhLib 4.1.4 汉化修改版 By netrobo
netrobo 2006/6/28 下+7604/浏+22837 评+18
EhLib 官方 v4.1.4 完整版本带源码
wangkexian 2006/5/10 下+18637/浏+36208 评+44
Ehlib.propStoreEH: PropFilerEh.pas单元有…
hsgrass 2006/3/13 下+406/浏+11328 评+3
Ehlib v4.0 修改版 For BDS2006
dejoy 2006/2/6 下+1493/浏+15011 评+3
DBGrid 更改为 DBGridEh
rongxingdelphi 2006/1/23 下+988/浏+16859 评+1
EhLib v4.1.4 官方评估版
leo 2006/1/18 下+1528/浏+15324 评+17
EhLib v3.6 For D6/D7 傻瓜安装版
dl99 2006/1/9 下+24429/浏+32112 评+21
EhGrid支持Delphi2006的方法
zbluecn 2006/1/8 下+0/浏+12231 评+3
EhLib v3.6 汉化修改版 For DELPHI 2006
cooper_lyt 2006/1/6 下+1641/浏+14467 评+7
EhLib v4.0 官方评估版
yqh110 2005/11/30 下+1509/浏+16553 评+3
DBGridEhColSelect v3.6
lins19741218 2005/10/20 下+1964/浏+16872 评+27
EhLib 3.6 美化汉化修改版
yangzh 2005/7/13 下+9371/浏+28671 评+22
EhLib 3.6 汉化修改版 by Netrobo
netrobo 2005/7/2 下+2117/浏+18625 评+17
EhLib v3.6 FS 简体中文D7版 (FireRose修改…
firerose 2005/6/24 下+5635/浏+25622 评+20
EhLib v3.6 FS For D4-9/CB4-6
jemsn 2005/2/7 下+7834/浏+24488 评+35
Enlib v3.5 for delphi2005
skywolf888 2004/12/16 下+1636/浏+18908 评+6
DBGridEh多表头输出到Excel
jit 2004/12/1 下+3354/浏+24411 评+14
EhLib v3.5 With Full Source
yangzh 2004/10/25 下+2785/浏+21038 评+26
多表头的DBGridEH导出到Excel中
xue_fg 2004/7/8 下+611/浏+27018 评+29
EhLib 3.4 汉化修改版 by Netrobo
netrobo 2004/7/3 下+2178/浏+23278 评+49
Ehlib v3.4 With FireRose For D7 汉化版
firerose 2004/6/1 下+2641/浏+20604 评+18
EhLib v3.4 (支持D8)
jemsn 2004/5/30 下+1829/浏+19638 评+19
EhLib 3.3 汉化版 (增加排序)
firerose 2004/2/19 下+2136/浏+23547 评+42
EhLib v3.3 (数据表格、报表控件包)
hzw008 2004/2/16 下+2011/浏+22581 评+23
Ehlib 3.2 PGT 版 中国式表格
y13y 2003/12/3 下+4579/浏+29574 评+37
EhLib 3.2 (数据表格、报表控件包)
mantousoft 2003/10/17 下+2597/浏+22826 评+33
EhLib 3.0 (数据表格、报表控件包)
mantousoft 2003/9/7 下+3180/浏+23337 评+34
相关评论
共有评论29条 当前显示最后6条评论
syypzm_1004 2005/11/1 19:21:33
jit :
能否把你实现的单元的所有文件,传给我,谢谢!现在我正在研究这个。我的油箱是:shiyuyu1004@sina.com.cn
darkforce 2005/12/26 16:07:40
qqq111兄弟的办法很妙啊!赞一下。但是我试过之后发现一个问题,导出的HTM格式文件的语言编码似乎不是默认为简体中文的,这样Excel打开后看到的中文都是乱码。有什么办法解决这个问题呢?
darkforce 2005/12/26 16:12:35
补充一下:我发现,直接导出为htm文件中文的显示没有问题,按照qqq111兄弟的办法导出的Excel文件中文显示为乱码,但改为htm扩展名后用浏览器打开又没有问题。但是改回xls扩展名后在Excel中中文显示就还是乱码
darkforce 2005/12/26 16:53:03
搞定了,我发现是我的Excel的WEB编码选项有问题,改为简体中文后就好了
cch001 2006/3/9 16:04:11
本人经过测试,修改了导入excel时web编码为不中文的代码,并且字体居中显示,如有需要请联系!!!
a_way 2006/6/12 10:29:35
cch001,怎么修改导入时web编码?
我要发表评论 查看全部评论
 
  DELPHI盒子版权所有 1999-2012 V3.01 沪ICP备05001939号 更新RSS列表