开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 117|回复: 2
收起左侧

[易语言] docx 转html 超慢 如何该 谢谢:)

[复制链接]
结帖率:95% (190/200)
发表于 前天 10:32 | 显示全部楼层 |阅读模式   浙江省杭州市
100精币
.版本 2
.支持库 spec
.支持库 eAPI

.子程序 Word转Html_单个
.参数 文件路径, 文本型
.参数 输出文件夹路径, 文本型
.局部变量 WordApp, 对象
.局部变量 WordDocuments, 对象
.局部变量 WordFile, 对象
.局部变量 Html文件路径, 文本型

调试输出 (文件路径)
调试输出 (输出文件夹路径)
.如果真 (取反 (文件_是否存在 (文件路径)))
    输出调试文本 (格式化文本 (“文件%s不存在”, 文件路径))
    返回 ()
.如果真结束
.如果真 (取反 (目录_是否存在 (输出文件夹路径)))
    输出调试文本 (格式化文本 (“文件夹%s不存在”, 输出文件夹路径))
    返回 ()
.如果真结束
WordApp.创建 (“Word.Application”, )
.如果真 (WordApp.是否为空 ())
    输出调试文本 (“Word/Wps应用打开失败,请检查Word/Wps是否安装”)
    返回 ()
.如果真结束
.如果真 (取文本右边 (输出文件夹路径, 1) ≠ “\”)
    输出文件夹路径 = 输出文件夹路径 + “\”
.如果真结束
Html文件路径 = 输出文件夹路径 + 文件_取文件名 (文件路径, 假) + “.html”
WordDocuments = WordApp.读对象型属性 (“Documents”, )
WordFile = WordDocuments.对象型方法 (“Open”, 文件路径)
WordFile.通用方法 (“SaveAs2”, Html文件路径, 8)
WordFile.通用方法 (“Close”, )
WordApp.对象型方法 (“Quit”, )
调试输出 (文件路径)
调试输出 (输出文件夹路径)
调试输出 (Html文件路径)


能转换 超慢  
下面这个只能做DOC

.版本 2

.子程序 WORD转HTML, 逻辑型
.参数 strSrcFile, 文本型, , 要转换的文件
.参数 strDestFile, 文本型, , 新保存的文件
.局部变量 AppObject, 对象
.局部变量 Documents, 对象
.局部变量 Document, 对象

.如果真 (CreateOfficeApplication (AppObject, “Word.Application”) = 假)
    返回 (假)
.如果真结束
AppObject.写属性 (“Visible”, 假)
Documents = AppObject.读属性 (“Documents”, ).取对象 ()
Document = Documents.通用方法 (“Open”, strSrcFile, 假, 真).取对象 ()
.如果真 (Document.是否为空 ())
    信息框 (“打开文件失败” + #换行符 + strSrcFile, #错误图标, “错误”)
    AppObject.方法 (“Quit”, )
    返回 (假)
.如果真结束
Document.方法 (“SaveAs”, strDestFile, #wdFormatHTML, #msoCTrue)
Document.方法 (“Close”, )
AppObject.方法 (“Quit”, )
返回 (真)








补充内容 (2025-6-11 10:52):
.版本 2

.子程序 _按钮_转换_被单击
.局部变量 Word应用, 对象
.局部变量 Word文档, 对象
.局部变量 文件路径, 文本型
.局部变量 保存路径, 文本型

这个快


回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳
结帖率:55% (11/20)

签到天数: 7 天

发表于 前天 11:07 | 显示全部楼层   浙江省湖州市
### 优化 docx 转 HTML 的性能

分析你的代码后,我发现了几个可能导致转换速度慢的原因。下面提供几种优化方案:

#### 主要优化方向

1. **禁用 Word 可见性**:让 Word 在后台运行
2. **禁用警告提示**:避免弹出确认对话框
3. **优化文件保存参数**:使用更高效的 HTML 格式
4. **添加错误处理**:确保资源正确释放
5. **并行处理多个文件**:如果需要批量转换

#### 优化后的代码

以下是优化后的代码,通过减少 Word 操作中的冗余步骤和等待时间来提高性能:

```易语言
.版本 2
.支持库 spec
.支持库 eAPI

.子程序 Word转Html_单个, 逻辑型
.参数 文件路径, 文本型
.参数 输出文件夹路径, 文本型
.局部变量 WordApp, 对象
.局部变量 WordDocuments, 对象
.局部变量 WordFile, 对象
.局部变量 Html文件路径, 文本型

调试输出 (文件路径)
调试输出 (输出文件夹路径)

.如果真 (取反 (文件_是否存在 (文件路径)))
    输出调试文本 (格式化文本 ("文件%s不存在", 文件路径))
    返回 (假)
.如果真结束

.如果真 (取反 (目录_是否存在 (输出文件夹路径)))
    输出调试文本 (格式化文本 ("文件夹%s不存在", 输出文件夹路径))
    返回 (假)
.如果真结束

// 创建Word应用实例并设置为不可见
WordApp.创建 ("Word.Application", )
.如果真 (WordApp.是否为空 ())
    输出调试文本 ("Word/Wps应用打开失败,请检查Word/Wps是否安装")
    返回 (假)
.如果真结束

// 设置Word应用不可见,关闭警告提示
WordApp.写属性 ("Visible", 假)
WordApp.写属性 ("DisplayAlerts", 0) // 0=wdAlertsNone,不显示警告

// 处理输出路径
.如果真 (取文本右边 (输出文件夹路径, 1) ≠ "\")
    输出文件夹路径 = 输出文件夹路径 + "\"
.如果真结束

Html文件路径 = 输出文件夹路径 + 文件_取文件名 (文件路径, 假) + ".html"

// 打开文档并转换
WordDocuments = WordApp.读对象型属性 ("Documents", )
WordFile = WordDocuments.对象型方法 ("Open", 文件路径, 假, 真) // 第三个参数:不更新域,第四个参数:以只读方式打开

// 使用更高效的HTML格式:10=wdFormatFilteredHTML (过滤的HTML)
WordFile.通用方法 ("SaveAs2", Html文件路径, 10)

// 关闭文档和应用
WordFile.通用方法 ("Close", 0) // 0=wdDoNotSaveChanges
WordApp.对象型方法 ("Quit", 0)

// 释放COM对象
WordFile.释放 ()
WordDocuments.释放 ()
WordApp.释放 ()

调试输出 (文件路径)
调试输出 (输出文件夹路径)
调试输出 (Html文件路径)
返回 (真)
```

#### 批量处理优化方案

如果你需要批量处理多个文件,可以使用以下方法:

```易语言
.版本 2
.支持库 spec
.支持库 eAPI

.子程序 批量Word转Html, 逻辑型
.参数 输入文件夹路径, 文本型
.参数 输出文件夹路径, 文本型
.局部变量 WordApp, 对象
.局部变量 WordDocuments, 对象
.局部变量 WordFile, 对象
.局部变量 文件列表, 文本型, , "存放找到的文件路径"
.局部变量 i, 整数型
.局部变量 当前文件, 文本型
.局部变量 Html文件路径, 文本型

// 确保路径格式正确
.如果真 (取文本右边 (输入文件夹路径, 1) ≠ "\")
    输入文件夹路径 = 输入文件夹路径 + "\"
.如果真结束

.如果真 (取文本右边 (输出文件夹路径, 1) ≠ "\")
    输出文件夹路径 = 输出文件夹路径 + "\"
.如果真结束

// 获取所有docx文件
文件列表 = 文件_枚举 (输入文件夹路径, "*.docx", 假)

// 创建Word应用实例并设置为不可见
WordApp.创建 ("Word.Application", )
.如果真 (WordApp.是否为空 ())
    输出调试文本 ("Word/Wps应用打开失败,请检查Word/Wps是否安装")
    返回 (假)
.如果真结束

WordApp.写属性 ("Visible", 假)
WordApp.写属性 ("DisplayAlerts", 0)
WordDocuments = WordApp.读对象型属性 ("Documents", )

// 循环处理每个文件
.计次循环首 (取数组成员数 (文件列表), i)
    当前文件 = 文件列表 [i]
    Html文件路径 = 输出文件夹路径 + 文件_取文件名 (当前文件, 假) + ".html"
   
    WordFile = WordDocuments.对象型方法 ("Open", 当前文件, 假, 真)
    WordFile.通用方法 ("SaveAs2", Html文件路径, 10)
    WordFile.通用方法 ("Close", 0)
    WordFile.释放 ()
   
    调试输出 (格式化文本 ("已转换: %s", 当前文件))
.计次循环尾 ()

// 关闭Word应用
WordApp.对象型方法 ("Quit", 0)
WordDocuments.释放 ()
WordApp.释放 ()

返回 (真)
```

### 其他优化建议

1. **考虑使用其他转换方法**:
   - 如果不需要保留复杂格式,可以考虑使用纯文本提取后再转换为HTML
   - 某些情况下,使用第三方命令行工具(如pandoc)可能更快

2. **检查系统环境**:
   - 确保你的Word/WPS安装完整且没有损坏
   - 检查系统资源使用情况,确保有足够的内存和CPU资源

3. **考虑多线程处理**:
   - 如果需要批量处理大量文件,可以考虑使用多线程并行处理

通过以上优化,你的docx转HTML的速度应该会有明显提升。如果仍然感觉慢,可能需要考虑使用更专业的文档处理库或工具。
回复

使用道具 举报

签到天数: 7 天

发表于 前天 11:08 | 显示全部楼层   河南省驻马店市
减少界面交互,避免不必要的对话框,简化对象操作流程,减少中间变量
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表