目前文档的在线预览方式大致有以下几种:
- 服务器先转换为PDF,再转换为SWF,最后通过网页加载Flash预览
- Office文档直接转换为SWF,通过网页加载Flash预览
- office转Html、pdf转图片在线预览文件Html文件
- 第三方ActiveX浏览器控件
- 微软的Office Web Apps
- 第三方成熟的服务
- 在浏览器中直接打开
基于服务器、用户环境的考虑以及实现的复杂程度,这里选择使用office转html的方式来实现。Excel文件的读取使用python 开源库 xlrd 0.9.3。
基本思路:
- 打开指定文档
- 读取指定sheet,默认为第一个
- 处理合并单元格
- 读取所有单元格,并生成html的table内容标签
- 利用css和js调整table元素格式
使用xlrd读取Excel文档遇到的问题:
- 用merged_cells读取合并单元格时,列表为空,无法取得相应的数据
解决办法:在打开文档时设置:formatting_info 参数,之后成功获取相关格式信息。
代码: wb = open_workbook(filepath,formatting_info=True)
最后在网页中插入生成的table代码,并配合css和js显示Excel文档内容。显示效果与 idocv 一样,效率很高,如果数据量大可以加上分页处理功能,加上专业的css和js一定会使Excel文档的展现接近完美。
代码地址:https://github.com/XYFHY2004/Excel2Html.git
参考文档
http://www.officeweb365.com/officetoview.html
http://www.cppblog.com/snowzjy/articles/32056.html
http://www.cnblogs.com/flashlm/archive/2010/11/22/document-preview-online.html
http://www.cnblogs.com/flashlm/archive/2010/11/27/1889426.html
http://www.idocv.com