DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: lichunyu
今日帖子: 18
在线用户: 24
导航: 论坛 -> 发布代码 斑竹:liumazi,ruralboy  
作者:
男 good15 (good15) ▲▲▲▲▲ -
注册会员
2019/4/2 15:48:09
标题:
关于Office文件远程预览源码及简单调用 浏览:244
加入我的收藏
楼主: 关于Office文件远程预览源码及简单调用
1.直接转换为html预览,效果好,成功率高
2.建议wps,速度快,但是xls里的图片无法转化
3.服务端不可和微软offiec及wps 混装,以防服务互窜
4.使用3年一类,很稳定
5.主要代码如下:
  FileName := HTTPDecode(FileName);
  if FileExists(FileName) then
  begin
    if Pos('.doc', ExtractFileExt(FileName)) > 0 then
      AppStyleID := 0
    else if Pos('.xls', ExtractFileExt(FileName)) > 0 then
      AppStyleID := 1
    else if Pos('.ppt', ExtractFileExt(FileName)) > 0 then
      AppStyleID := 2
    else if Pos('.pdf', ExtractFileExt(FileName)) > 0 then
      AppStyleID := 3
    else
      AppStyleID := 0;
        // ppt文件无需限制大小
    if AppStyleID <> 2 then
    begin
      try
        FS := TFileStream.Create(FileName, fmShareDenyNone or fmOpenRead);
        FS.Position := 0;
        FSize := FS.Size;
        FS.DisposeOf;

        // 不大于5M
       { if FSize > 5 * 1024 * 1024 then
        begin
          Result := HTTPEncode('错误:文件过大,暂不支持预览');
          Exit;
        end; }
      except
        Result := HTTPEncode('错误%:文件打开失败');
      end;
    end;

    try
      App := CreateOleObject(AppStyles[AppStyleID]);

      try
        App.DisplayAlerts := false;

        if AppStyleID = 0 then
        begin
          App.Visible := false;
          // App.Visible := True;

          HtmlName := HomePath + '\' + TemplatePath + '\' + getfilename(FileName) + '.htm';
          Doc := App.Documents.Open(FileName, false, true, true);

          Doc.SaveAs(HtmlName, wdFormatFilteredHTML, False, EmptyParam, False, EmptyParam,
          False, False, False, False, False, msoEncodingUTF8);

        end
        else if AppStyleID = 1 then
        begin
          App.Visible := false;
          // App.Visible := True;

          HtmlName := HomePath + '\' + TemplatePath + '\' + getfilename(FileName) + '.htm';
          Doc := App.WorkBooks.Open(FileName, false, true, true);

          Doc.SaveAs(HtmlName, xlHtml, null, null, null, null, xlExclusive,
          xlLocalSessionChanges);
        end
        else if AppStyleID = 2 then
        begin
          // App.Visible := false;
          // App.Visible := True;

          HtmlName := HomePath + '\' + TemplatePath + '\' + getfilename(FileName);
          // Doc := App.Presentations.Open(FileName, true, true, false);
          Doc := App.Presentations.Open(FileName, true, true, false);

          // App.ActivePresentation.SaveCopyAs(HtmlName, ppSaveAsJPG);
          // 此处要注意,wpp和powerpoint不同,powerpoint不需传入jpg后缀
          Doc.SaveCopyAs(HtmlName + '.jpg', ppSaveAsJPG);

          HtmlName := HtmlName + '.htm';
        end
        else if AppStyleID = 3 then
        begin
          // App.Visible := false;
          // App.Visible := True;

          HtmlName := HomePath + '\' + TemplatePath + '\' + getfilename(FileName);
          // Doc := App.Presentations.Open(FileName, true, true, false);
          Doc := App.Presentations.Open(FileName, true, true, false);

          // App.ActivePresentation.SaveCopyAs(HtmlName, ppSaveAsJPG);
          // 此处要注意,wpp和powerpoint不同,powerpoint不需传入jpg后缀
          Doc.SaveCopyAs(HtmlName + '.jpg', ppSaveAsJPG);

          HtmlName := HtmlName + '.htm';
        end;
 详细demo 请加QQ获取 1759156387
----------------------------------------------
何和
作者:
男 a5824 (Return) ▲▲▲▲△ -
注册会员
2019/4/3 8:19:42
1楼: 打个卡。
----------------------------------------------
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v2.1 版权所有 页面执行15.625毫秒 RSS