捐赠 | 广告 | 注册 | 发布 | 上传 | 关于我们    
  沪ICP备05001939号 DELPHI盒子 | 盒子论坛 | 盒子文章 | 盒子问答悬赏 | 最新更新 | 论坛检索 | 下载中心 | 高级搜索    
  精品专区 | 繁體中文 | 奖励公告栏 | 直通车账号登陆 | 关闭GOOGLE广告 | 临时留言    
 
广告
评论:多表头的DBGridEH导出到Excel中
a_way 24233 2006/6/12 10:29:35
cch001,怎么修改导入时web编码?
cch001 22002 2006/3/9 16:04:11
本人经过测试,修改了导入excel时web编码为不中文的代码,并且字体居中显示,如有需要请联系!!!
darkforce 20347 2005/12/26 16:53:03
搞定了,我发现是我的Excel的WEB编码选项有问题,改为简体中文后就好了
darkforce 20345 2005/12/26 16:12:35
补充一下:我发现,直接导出为htm文件中文的显示没有问题,按照qqq111兄弟的办法导出的Excel文件中文显示为乱码,但改为htm扩展名后用浏览器打开又没有问题。但是改回xls扩展名后在Excel中中文显示就还是乱码
darkforce 20344 2005/12/26 16:07:40
qqq111兄弟的办法很妙啊!赞一下。但是我试过之后发现一个问题,导出的HTM格式文件的语言编码似乎不是默认为简体中文的,这样Excel打开后看到的中文都是乱码。有什么办法解决这个问题呢?
syypzm_1004 18817 2005/11/1 19:21:33
jit :
能否把你实现的单元的所有文件,传给我,谢谢!现在我正在研究这个。我的油箱是:shiyuyu1004@sina.com.cn
qqq111 15106 2005/5/25 15:23:12
楼上的意见很好,我试了一下,成功了。
但我找到了一个更好的办法,不用改名:
  SaveDialog1.Filter:='*.XLS|*.XLS';
  SaveDialog1.DefaultExt:='XLS';

  if SaveDialog1.Execute then
    SaveDBGridEhToExportFile(TDBGridEhExportAsHTML,dbgrideh1,SaveDialog1.FileName,true);
即仍然使用TDBGridEhExportAsHTML对象,但文件名使用XLS,这样excel就可以直接打开了,很好用
xue_fg 11246 2005/1/5 9:38:33
最好的办法就是先导出为HTM格式的文件,然后改名字为XLS文件,这样用户打开后就是完全一样的XLS文件了。
joist 10888 2004/12/24 10:47:25
那位兄弟遇到这样的问题了?
使用EhLib3。4 之后,
点击FKLookUp 字段下拉列表,按下Ctrl键,系统立即报错,
raised exception class EstackOverflow with message 'Stock overflow',process stopped.
如果不是在便宜环境下,则程序直接关闭了。
hjma 10887 2004/12/24 10:42:41
我还有一个折中的办法,就是先把数据导出到TWebBrowser对象中,然后把
TWebBrowser对象中的内容全部拷贝到Excel中,这样操作比较省事,最最最
主要的是它的输出结果就可以达到与显示界面完全一样的效果,
缺点就是第一次操作时速度比较慢,如果导出多张报表时,速度就快了。

procedure DispHtmlFromStream(const WebBrowser: TWebBrowser; const MStream: 
TStream);
var
  iPosition: Largeint;
  hr: HRESULT;
  pStream: IStream;
  pTmpPersistStreamInit: IPersistStreamInit;
begin
  Screen.Cursor:=crHourGlass;
  if MStream = nil then Exit;

  with WebBrowser do
  begin
    if not Assigned(Document) then
    begin
      Navigate('about:blank');
    end;
    MStream.Seek(0, 0);
    (Document as IPersistStreamInit).Load(TStreamadapter.Create(MStream));
  end;
  Screen.Cursor:=crDefault;
end;

  TForm1 = class(TForm)
    BitBtn1: TBitBtn;
    WebBrowser1: TWebBrowser;
  end;

procedure TForm1.BitBtn1Click(Sender: TObject);
var
  tmpStream: TMemoryStream;
  OleNullSheet, OleSheet, OleWorkbook: Variant;
begin
  tmpStream:=TMemoryStream.Create;
  try
    WriteDBGridEhToExportStream(TDBGridEhExportAsHTML,
        DBGridEh1, tmpStream, True);
    DispHtmlFromStream(WebBrowser1, tmpStream);
    WebBrowser1.ExecWB(OLECMDID_SELECTALL, OLECMDEXECOPT_DODEFAULT);
    WebBrowser1.ExecWB(OLECMDID_COPY,OLECMDEXECOPT_PROMPTUSER);
    OleNullSheet:=CreateOleObject('Excel.Sheet');
    OleWorkbook:=OleNullSheet.Application.Workbooks.Add;
    OleSheet:=OleWorkbook.Sheets.Add;
    OleSheet.Paste;
    OleSheet.Application.Visible:=True;

    ShowMessage('导出数据成功!!');
  finally
    tmpStream.Free;
  end;
end;
hjma 10883 2004/12/24 10:06:32
StreamWriteWordArray模块找不到时,可以换成下面这个方法
          Stream.WriteBuffer(CXlsLabel, SizeOf(CXlsLabel));
          Stream.WriteBuffer(Pointer(str1)^, L);
          //StreamWriteWordArray(Stream, CXlsLabel);
          //StreamWriteAnsiString(Stream, str1);
可能有别的单元文件包含进去,不过包含的东西越少越好。
jit 10471 2004/12/13 16:56:20
kdmydream:
效果是一样的啊?你所说的不一样是什么?
to: zhy19806,joist
在这里
http://www.2ccc.com/idea.asp?articleid=1663
joist 10467 2004/12/13 15:06:51
jit

发给我好吗,感激!!!
kdmydream 10127 2004/12/3 15:15:53
jit:
对于他所所的:“我已经全部解决了DBGridEh的多表头输出到Excel”
我试了的他的作品,好象根本没有解决!
和以前没有太大的差别,我觉得应该输出的效果应该和在DBGridEh看到的效果一样,那才好?
zhy19806 10105 2004/12/2 22:22:02
jit
可不可以发一份给我呀
zhy19806@163.com
jit 10100 2004/12/2 21:10:34
kdmydream:
  发现了第二个bug,我已经发在论坛中了,你自己修正下
kdmydream 10072 2004/12/2 8:24:55
谢谢!
jit 10054 2004/12/1 16:30:19
kdmydream:
  已经发了
kdmydream 10053 2004/12/1 16:06:50
jit :
能否把你实现的单元的所有文件,传给我,谢谢!
我的Email: liushanfeng@163.com
谢谢!
jit 10052 2004/12/1 15:51:25
我已经全部解决了DBGridEh的多表头输出到Excel
第一页 上一页 下一页 最后页 有 29 条纪录 共2页 1 - 20
 用户名:
 密 码:
自动登陆(30天有效)
 
  DELPHI盒子版权所有 1999-2023 V4.01 粤ICP备10103342号-1 更新RSS列表