有一个小需求,将word文档在页面上显示。因为需要word里面的格式(还有图片),所以不能抽出文本显示。考虑将word转为html后在页面显示html代码,可以保留格式和图片链接(图片链接需要做处理)。
不知道使用java是否可以完成这个功能,不过网上找到使用python调用windows接口的文章,所以照着做了一下,还挺方便的。第一次用python,只是照葫芦画瓢,在此记录一下。
#coding=utf-8
#文件名:
#BatchConverWords2Html.py
#说明:
#批量将一个文件夹下的所有.doc/.docx文件转为.html文件,需要安装对应的win32模块
#调用方式:进入源程序目录,命令:python BatchConverWords2Html.py RootDir
from win32com import client as wc
import os
word = wc.Dispatch('Word.Application')
def wordsToHtml(dir):
for path, subdirs, files in os.walk(dir):
for wordFile in files:
wordFullName = os.path.join(path, wordFile)
#print "word:" + wordFullName
doc = word.Documents.Open(wordFullName)
wordFile2 = unicode(wordFile, "gbk")
dotIndex = wordFile2.rfind(".")
if(dotIndex == -1):
print "********************ERROR: 未取得后缀名!"
fileSuffix = wordFile2[(dotIndex + 1) : ]
if(fileSuffix == "doc" or fileSuffix == "docx"):
fileName = wordFile2[ : dotIndex]
htmlName = fileName + ".html"
htmlFullName = os.path.join(unicode(path, "gbk"), htmlName)
#htmlFullName = unicode(path, "gbk") + "\\" + htmlName
print "generate html:" + htmlFullName
doc.SaveAs(htmlFullName, 10)
doc.Close()
word.Quit()
print ""
print "Finished!"
if __name__ == '__main__':
import sys
if len(sys.argv) != 2:
print "Usage: python funcName.py rootdir"
sys.exit(100)
wordsToHtml(sys.argv[1])
运行结果就是在rootdir目录下的所有word文档转为简洁版的html网页文件,生成的文件存在原word同目录下,有可能生成 xxx.files 文件夹。
这里只是综合了一个遍历文件夹目录的例子和一个调用win32com接口的例子,对python还是不太明白,需要好好系统学习下。
参考了《Python Cookbook》书 2.17 的一段遍历文件夹的代码:
#《Python Cookbook》2.17 在目录树中改变文件扩展名
import os
def swapextensions(dir, before, after):
if before[:1] != '.':
before = '.' + before
thelen = -len(before)
if after[:1] != '.':
after = '.' + after
for path, subdirs, files in os.walk(dir):
for oldfile in files:
if oldfile[thelen:] == before:
oldfile = os.path.join(path, oldfile)
newfile = oldfile[:thelen] + after
os.rename(oldfile, newfile)
if __name__ == '__main__':
import sys
if len(sys.argv) != 4:
print "Usage: swapext rootdir before after"
sys.exit(100)
swapextensions(sys.argv[1], sys.argv[2], sys.argv[3])
注:
1. 要想调用win32com接口,除了安装Python,还需要下载安装与python版本对应的pywin32
模块,我下的是pywin32-216.win32-py2.7.exe;
参考:
一、Python转换office word文件为HTML
二、Python中使用中文
三、Python Cookbook
============================================
2011年8月23日
今天突然发现一个问题,使用python转出来的html和使用word软件手工转出来的html代码不一样,我之前一直认为调用的是同样的API结果应该一样!
ps:javaeye的SEO真好,现在百度搜索“python word html”第二篇就是这个,哎,不过我想看看其他人有没有遇到这种问题啊。
分享到:
相关推荐
对于图片,可以使用`BeautifulSoup`找到`<img>`标签,下载图片并将其嵌入到Word文档中。对于表格,可以直接转换HTML表格到Word表格。链接则可能需要转换为文本,或者在Word中创建超链接。 在处理大量网页时,可以将...
2. **C#编程**:利用C#,我们可以创建一个控制台应用或Windows应用,接收文件夹路径作为输入,遍历其中的所有.docx文件,然后使用Open XML SDK进行转换。 3. **文件操作**:在C#中,我们将使用`System.IO`命名空间...
18. Python字符串处理:输入93python22,程序会遍历字符串,由于'0'不在字符串中,所以输出原字符串。 19. 元组与表的关系:在数据库中,一个元组对应表中的一条记录。 20. 字符串转换:将字符串s1和s2转换为...
2023年免费在线作业答案东大秋学期语言程序设计在线作业答案.doc
电子商务网店系统策划方案书.doc
内容概要:本文详细介绍了基于MATLAB/Simulink构建的三相电压型SVPWM整流器开环控制仿真模型。模型采用R2015b版本,适用于初学者理解SVPWM的基本原理。主要内容涵盖模型的整体结构、扇区判断逻辑、占空比计算以及PWM生成模块的具体实现。文中还讨论了仿真过程中的一些常见问题及其解决方案,如死区时间的设置、调制比的影响等。仿真结果显示,在10kHz开关频率下,直流母线电压稳定在500V左右,交流侧电流THD约为7.2%,展示了SVPWM的有效性。 适合人群:刚接触电力电子仿真的学生和工程师,尤其是对SVPWM感兴趣的学习者。 使用场景及目标:帮助读者理解SVPWM的工作原理,掌握Simulink建模技巧,熟悉三相电压型整流器的开环控制系统设计。通过动手实践,加深对电力电子器件和控制算法的理解。 其他说明:文中提供了详细的代码片段和参数配置建议,便于读者复现实验结果。同时指出了模型的局限性和改进方向,鼓励读者进行进一步的研究和探索。
内容概要:本文详细介绍了如何使用遗传算法进行微电网运行优化,并提供了完整的MATLAB代码实现。主要内容包括目标函数的设计,如运行成本的计算(燃料成本、维护成本、购电成本),以及约束条件的处理方法,如功率平衡约束和设备出力限制。文中还讨论了遗传算法的具体实现步骤,包括种群初始化、适应度计算、交叉变异操作等,并展示了优化结果的可视化方法。此外,文章分享了一些实用技巧,如种群规模的选择、交叉率和变异率的设置等。 适合人群:具备一定MATLAB编程基础和电力系统基础知识的研究人员、工程师和技术爱好者。 使用场景及目标:适用于希望深入了解微电网优化调度原理并掌握遗传算法应用的技术人员。目标是通过实例代码帮助读者理解和实现微电网运行成本最小化的优化过程。 其他说明:文中提供的代码可以直接用于实验和研究,同时也指出了进一步改进的方向,如引入鲁棒优化、动态调整光伏预测等。
内容概要:本文详细探讨了永磁同步电机在单电流控制策略下的MTPA(最大转矩电流比)和弱磁控制的应用。首先介绍了这两种控制方式的基本原理及其切换机制,特别是在额定转速前后的工作模式转换。文中提供了具体的Python、C和Matlab代码片段,展示了如何通过数学建模和算法实现这两种控制方法。此外,还讨论了实际调试过程中遇到的问题及解决方案,如电流跳变、参数敏感性和电流环带宽等问题。最后强调了在不同转速区间内的性能优化措施,确保系统的稳定性和高效运行。 适合人群:从事电机控制系统设计与开发的技术人员,尤其是对永磁同步电机控制有一定了解的研发人员。 使用场景及目标:适用于需要深入了解永磁同步电机控制策略的研究人员和技术开发者,帮助他们掌握MTPA和弱磁控制的具体实现方法以及应对实际调试中常见问题的能力。 其他说明:文章不仅提供了理论分析,还包括大量实践经验分享,有助于读者更好地理解和应用相关技术。
内容概要:本文详细介绍了利用粒子群算法(PSO)解决分布式电源在配电网中的选址定容问题,旨在将网损降至最低。文中首先解释了粒子群算法的基本原理及其参数设定,如惯性系数、学习因子等,并展示了具体的Python代码实现。接着讨论了适应度函数的设计,特别是如何通过引入电压惩罚机制确保电压稳定。随后,通过一个18节点配电网的实际案例,展示了算法的有效性,结果显示网损显著降低,电压分布更加均衡。此外,还提到了一些实际应用中的注意事项,如地理信息约束和并行计算的应用。 适合人群:从事电力系统优化、智能电网研究的技术人员,尤其是对分布式电源选址定容感兴趣的工程师。 使用场景及目标:适用于需要优化配电网性能的研究机构和技术团队,目标是在不影响电网安全性的前提下,最大化分布式电源的经济效益和社会效益。 其他说明:尽管粒子群算法在理论上有很好的表现,但在实际应用中还需综合考虑更多因素,如投资成本、维护难度等。此外,文中提到的一些技术细节(如并行计算、地理信息约束)对于提高算法效率至关重要。
matlab
2023年二级办公软件选择题判断题.docx
内容概要:本文详细介绍了如何使用威纶通MT6103IP触摸屏通过Modbus RTU协议控制台达伺服电机的基本操作。主要内容涵盖硬件连接、触摸屏设置、Modbus RTU通讯配置、控制程序编写、代码分析、在线模拟和实际调试等方面。文中提供了详细的寄存器地址映射和控制逻辑示例,帮助读者理解和实现具体的控制功能。 适合人群:具备一定自动化控制和工业通信基础的技术人员,尤其是从事PLC编程、触摸屏编程和伺服控制系统集成工作的工程师。 使用场景及目标:适用于工业自动化领域的设备控制项目,如贴标机等。主要目标是掌握威纶通触摸屏与台达伺服电机的Modbus RTU通讯方法,实现电机的正反转、停止、使能和脱机等功能。 其他说明:文章不仅提供理论指导,还包括大量实用的操作技巧和调试经验,有助于解决实际应用中的常见问题。
内容概要:本文详细介绍了如何构建一个高效的物联网数据接收服务器,能够处理数万个设备的同时连接。该系统采用C#语言,利用Socket异步事件、线程池、状态机协议解析以及EF6+SQLite/MySQL进行数据存储。文中强调了几个关键技术点:使用SocketAsyncEventArgs实现异步通信,通过状态机处理粘包/断包问题,优化EF6批量插入性能,以及使用环形缓冲区池来降低GC压力。此外,还提供了详细的性能测试数据和优化建议。 适合人群:具备一定C#编程基础,对物联网、高并发处理感兴趣的开发者和技术爱好者。 使用场景及目标:适用于需要处理大量物联网设备数据的企业和个人项目。主要目标是提高系统的并发处理能力和数据处理效率,确保在高负载情况下依然保持稳定的性能表现。 其他说明:文中提供的代码片段可以直接用于实际项目中,同时也附带了完整的源码和测试工具,便于快速上手和进一步优化。
2023年计算机一级等级考试选择题汇总.doc
chromedriver-mac-arm64-136.0.7103.25.zip
内容概要:本文详细介绍了永磁同步电机(PMSM)的有限集模型预测控制(FCS-MPC)算法在MATLAB中的实现过程。首先解释了FCS-MPC的工作原理,即通过遍历8个基本电压矢量并选择使代价函数最小的电压矢量来优化控制性能。接着展示了具体的MATLAB函数实现,包括坐标变换、电流预测、代价函数计算以及最优电压矢量的选择。文中强调了参数设置的重要性,如电感值、电阻值和采样时间等,并讨论了如何通过调整代价函数中的权重系数来改善系统的动态响应。此外,文章还提到了一些实用技巧,如使用persistent变量缓存电压矢量集合、简化预测模型以提高响应速度等。最终,通过仿真验证了FCS-MPC相比传统PI控制的优势,特别是在突加负载情况下的快速恢复能力和较低的电流THD。 适用人群:从事电机控制系统设计的研究人员和技术工程师,尤其是对永磁同步电机控制感兴趣的读者。 使用场景及目标:适用于需要高性能、快速响应的电机控制系统开发,旨在帮助工程师理解和掌握FCS-MPC算法的具体实现方法,从而应用于实际工程项目中。 其他说明:文章提供了详细的代码片段和理论解析,有助于读者深入理解FCS-MPC的工作机制。同时提醒读者注意参数敏感性和调参技巧,确保实际控制效果达到最佳。
2023年哈工程计算机复试面试题目参考.doc
2023年山大专升本计算机基础试卷.doc
内容概要:本文详细介绍了基于三菱Q系列PLC的四模块48轴运动控制系统的设计与实现。通过分层架构和模块化设计,确保了系统的可维护性和可移植性。文中展示了如何利用ST语言进行伺服轴参数配置,以及如何通过以太网实现视觉通信和远程I/O管理。此外,还探讨了状态机嵌套用于运动控制的具体应用,以及如何通过结构体封装提高代码的可读性和效率。通信架构方面,采用了UDP广播包和环形缓冲区来提升多设备同步精度。最后,强调了良好的架构设计对于复杂系统的重要意义,使得48轴联动控制变得如同搭建乐高积木一般简单。 适合人群:具备一定PLC编程经验的工程师和技术人员,尤其是从事运动控制和自动化领域的专业人士。 使用场景及目标:适用于大型工业自动化项目,旨在提高多轴联动控制系统的稳定性和可维护性。具体应用场景包括但不限于机器人控制、生产线自动化、智能制造等领域。 其他说明:本文不仅提供了具体的编程技巧,还分享了许多实用的经验和最佳实践,帮助读者更好地理解和掌握复杂的运动控制系统设计。
内容概要:本文详细介绍了基于西门子S7-1200 PLC和G120变频器构建的Modbus RTU通讯系统及其PID控制的应用实例。主要内容涵盖硬件配置、通讯参数设置、PID控制算法实现、触摸屏界面设计以及现场调试技巧。文中提供了具体的参数配置方法,如变频器的Modbus地址设置、波特率选择,以及PLC侧的MB_MASTER指令块使用。同时,针对PID控制,作者自定义了带有手自动切换功能的功能块,并详细解释了PID算法的具体实现,包括输出限幅和抗积分饱和的设计。此外,文章还涉及了触摸屏与PLC之间的变量绑定,确保了良好的人机交互体验。最后,作者分享了一些实用的调试经验和常见问题解决方案,如通讯线缆的选择、终端电阻的配置等。 适合人群:从事自动化控制领域的工程师和技术人员,尤其是对PLC编程和变频器通讯有一定基础的人群。 使用场景及目标:适用于需要实现PLC与变频器通讯并进行PID控制的工业应用场景,如风机控制、恒压供水等。目标是帮助读者掌握Modbus RTU通讯协议的配置和PID控制算法的实现,提高系统的稳定性和可靠性。 其他说明:文中提供的项目文件和电气图纸有助于读者快速搭建和调试类似的控制系统。建议读者在实践中结合具体需求进行适当调整和优化。