当前位置:首页 » 多媒体相关

关于将dbgrid的内容转换成网页的问题,UP有分


现在工作中有个要求,将dbgrid中的查询结果,转换成html文件,  
  然后利用ie来预览和打印,请教如何解决?  
  (听说delphi7中有自带控件可解决,不知是否是真的?)  
   
  我下载了一个dbehlib   for   d7控件,但在delphi7   中装不上,总提示某某.dcu文件  
  找不到,不知是什么原因?除了这个控件还有别的好方法吗?

推荐阅读

  • 注册表数据类型(二) [详细内容]
  • 投资2300元收回240万 电子商务展神奇魅力 [详细内容]
  • 惠普宣布将收购Snapfish 巩固数码打印市场 [详细内容]
  • PHP5的异常处理机制之使用throw关键字 [详细内容]
  • 关于增长待机时间和相关操作 [详细内容]
  • 惠普结束七周寻找 任命NCR赫德为首席执行官 [详细内容]
  • C++编译器如何实现异常处理 [详细内容]
  • 网友回答:
    网友:pressman

    那不是用delphi了  
      应该用asp!

    网友:sdliubo

    实在不行   自己遍历grid   自己来生成吧

    网友:wbgigi

    帮你顶吧

    网友:zousoft

    从delphi5开始就有这种功能了.  
       
      用internet页的tquerytableproducer.   实际上它并不是把dbgrid中的内容转换成了html,   而是直接把数据查询的结果输出为html.   当然,   使用公共的tquery,   就可以解决你的问题了.  
      tdatasettableproducer的功能也差不多.  
       
      delphi在数据库方面是很强大的,   不仅可以输出成html,   还可以从网页中输入信息到数据库,   并支持xml/dataset自动转换等...

    网友:older

    在tools->environment   options->library->library   path中加入ehlib的路径,就可以编译了

    网友:intelserver

    我用的dbgrideh控件就有这种功能,他在帮助里就介绍了使用方法,用该控件自带的export函数可以直接将data保存为html/rtf/xls等格式文件。

    网友:foxyy8888

    devexpress   qgrid控件是setup的,省去你的烦恼。而且功能强大。

    网友:muggins

    activeform

    网友:shadowfish

    dbgrideh可以把数据导出成网页的,delphi7下也能装ehlib,你再找找其他的版本下载

    网友:lzniam

    最好用xml

    网友:bxh2dai

    up  
     

    网友:cnhgj

    遍历dbgrid,然后自已生成

    网友:lzybfs

    dbgrid   变换成   html   表格  
      (*//  
       
      标题   :   数据网格处理成超文本表格    
       
      说明   :   支持对齐、字体、背景颜色   ;   做打印又有一种新方法了!    
       
      设计   :zswang  
       
      日期   :2002-05-19  
       
      支持   :wjhu111@21cn.com  
       
      //*)  
       
       
      ///////begin   source  
       
      function   colortohtml(mcolor:   tcolor):   string;  
       
      begin  
       
          mcolor   :=   colortorgb(mcolor);  
       
          result   :=   format(#%.2x%.2x%.2x,  
       
              [getrvalue(mcolor),   getgvalue(mcolor),   getbvalue(mcolor)]);  
       
      end;   {   colortohtml   }  
       
       
      function   strtohtml(mstr:   string;   mfont:   tfont   =   nil):   string;  
       
      var  
       
          vleft,   vright:   string;  
       
      begin  
       
          result   :=   mstr;  
       
          result   :=   stringreplace(result,   &,   &,   [rfreplaceall]);  
       
          result   :=   stringreplace(result,   <,   &lt;,   [rfreplaceall]);  
       
          result   :=   stringreplace(result,   >,   &gt;,   [rfreplaceall]);  
       
          if   result   =   then   result:=-;  
       
          if   not   assigned(mfont)   then   exit;  
       
          vleft   :=   format(<font   face="%s"   color="%s">,  
       
              [mfont.name,   colortohtml(mfont.color)]);  
       
          vright   :=   </font>;  
       
          if   fsbold   in   mfont.style   then   begin  
       
              vleft   :=   vleft   +   <b>;  
       
              vright   :=   </b>   +   vright;  
       
          end;  
       
          if   fsitalic   in   mfont.style   then   begin  
       
              vleft   :=   vleft   +   <i>;  
       
              vright   :=   </i>   +   vright;  
       
          end;  
       
          if   fsunderline   in   mfont.style   then   begin  
       
              vleft   :=   vleft   +   <u>;  
       
              vright   :=   </u>   +   vright;  
       
          end;  
       
          if   fsstrikeout   in   mfont.style   then   begin  
       
              vleft   :=   vleft   +   <s>;  
       
              vright   :=   </s>   +   vright;  
       
          end;  
       
          result   :=   vleft   +   result   +   vright;  
       
      end;   {   strtohtml   }  
       
       
      function   dbgridtohtmltable(mdbgrid:   tdbgrid;   mstrings:   tstrings;  
       
          mcaption:   tcaption   =   ):   boolean;  
       
      const  
       
          caligntext:   array[talignment]   of   string   =   (left,   right,   center);  
       
      var  
       
          vcolformat:   string;  
       
          vcoltext:   string;  
       
          vallwidth:   integer;  
       
          vwidths:   array   of   integer;  
       
          vbookmark:   string;  
       
          i,   j:   integer;  
       
      begin  
       
          result   :=   false;  
       
          if   not   assigned(mstrings)   then   exit;  
       
          if   not   assigned(mdbgrid)   then   exit;  
       
          if   not   assigned(mdbgrid.datasource)   then   exit;  
       
          if   not   assigned(mdbgrid.datasource.dataset)   then   exit;  
       
          if   not   mdbgrid.datasource.dataset.active   then   exit;  
       
          vbookmark   :=   mdbgrid.datasource.dataset.bookmark;  
       
          mdbgrid.datasource.dataset.disablecontrols;  
       
          try  
       
              j   :=   0;  
       
              vallwidth   :=   0;  
       
              for   i   :=   0   to   mdbgrid.columns.count   -   1   do  
       
                  if   mdbgrid.columns[i].visible   then   begin  
       
                      inc(j);  
       
                      setlength(vwidths,   j);  
       
                      vwidths[j   -   1]   :=   mdbgrid.columns[i].width;  
       
                      inc(vallwidth,   mdbgrid.columns[i].width);  
       
                  end;  
       
              if   j   <=   0   then   exit;  
       
              mstrings.clear;  
       
              mstrings.add(format(<table   bgcolor="%s"   border=1   width="100%%">,  
       
                  [colortohtml(mdbgrid.color)]));  
       
              if   mcaption   <>     then  
       
                  mstrings.add(format(<caption>%s</caption>,   [strtohtml(mcaption)]));  
       
              vcolformat   :=   ;  
       
              vcoltext   :=   ;  
       
              vcolformat   :=   vcolformat   +   <tr>#13#10;  
       
              vcoltext   :=   vcoltext   +   <tr>#13#10;  
       
              j   :=   0;  
       
              for   i   :=   0   to   mdbgrid.columns.count   -   1   do  
       
                  if   mdbgrid.columns[i].visible   then   begin  
       
                      vcolformat   :=   vcolformat   +   format(  
       
          <td   bgcolor="%s"   align=%s   width="%d%%">displaytext%d</td>#13#10,  
       
                          [colortohtml(mdbgrid.columns[i].color),  
       
                          caligntext[mdbgrid.columns[i].alignment],  
       
                          round(vwidths[j]   /   vallwidth   *   100),   j]);  
       
                      vcoltext   :=   vcoltext   +   format(  
       
          <td   bgcolor="%s"   align=%s   width="%d%%">%s</td>#13#10,  
       
                          [colortohtml(mdbgrid.columns[i].title.color),  
       
                          caligntext[mdbgrid.columns[i].alignment],  
       
                          round(vwidths[j]   /   vallwidth   *   100),  
       
                          strtohtml(mdbgrid.columns[i].title.caption,  
       
                              mdbgrid.columns[i].title.font)]);  
       
                      inc(j);  
       
                  end;  
       
              vcolformat   :=   vcolformat   +   </tr>#13#10;  
       
              vcoltext   :=   vcoltext   +   </tr>#13#10;  
       
              mstrings.text   :=   mstrings.text   +   vcoltext;  
       
              mdbgrid.datasource.dataset.first;  
       
              while   not   mdbgrid.datasource.dataset.eof   do   begin  
       
                  j   :=   0;  
       
                  vcoltext   :=   vcolformat;  
       
                  for   i   :=   0   to   mdbgrid.columns.count   -   1   do  
       
                      if   mdbgrid.columns[i].visible   then   begin  
       
                          vcoltext   :=   stringreplace(vcoltext,   format(>displaytext%d<,   [j]),  
       
                              format(>%s<,   [strtohtml(mdbgrid.columns[i].field.displaytext,  
       
                                  mdbgrid.columns[i].font)]),  
       
                              [rfreplaceall]);  
       
                          inc(j);  
       
                      end;  
       
                  mstrings.text   :=   mstrings.text   +   vcoltext;  
       
                  mdbgrid.datasource.dataset.next;  
       
              end;  
       
              mstrings.add(</table>);  
       
          finally  
       
              mdbgrid.datasource.dataset.bookmark   :=   vbookmark;  
       
              mdbgrid.datasource.dataset.enablecontrols;  
       
              vwidths   :=   nil;  
       
          end;  
       
          result   :=   true;  
       
      end;   {   dbgridtohtmltable   }  
       
      ///////end   source  
       
       
      {   uses   shellapi;   }  
       
       
      ///////begin   demo  
       
      procedure   tform1.button1click(sender:   tobject);  
       
      begin  
       
          dbgridtohtmltable(dbgrid1,   memo1.lines,   caption);  
       
          memo1.lines.savetofile(c:\temp.htm);  
       
          shellexecute(handle,   nil,   c:\temp.htm,   nil,   nil,   sw_show);  
       
      end;  
       
      ///////end   demo  
     

    网友:miracle

    使用tdatasettableproducer。

    网友:crazyhare

    用ehlib的dbgrideh!很好用!看他的demo就可以了

    网友:belllab

    哪那么复杂,用dev   express   的cxgrid自己就带导出为html,xml的功能,而且格式还很漂亮

    网友:miracle

    zhangheaaa(竹)  
       
      你那两个问题,使用tdatasettableproducer就不会出现了,不需要处理html   tag,也不需要手工设置字段标记,点击设置一下属性就行,运行时获得datasettableproducer1.content就ok了。  
     

    网友:fhuibo

     
      activeformx

    .

    讨论区

    Login