您尚未登录。

#1 2016-12-11 21:01:07

hounh
会员
注册时间: 2015-03-15
帖子: 47

[已解决](不是编码,是xlsx的style)如何解决openpyxl处理xlsx文件时的编码问题。

有一些内容相似的xlsx文件需要处理,就想到了脚本。
找到了python 的oepnpyxl。
可以修改单元格内容的同时,出现了问题。

FluxBB bbcode 测试

对号在保存之后成了一个奇怪的符号。
而在我用libreoffice打开然后另存为一下之后,再用python处理就没有问题了。

我就试图用 iconv之类的把xlsx文件处理一下,不过貌似不行,不知道是不是不支持还是我操作不对,毕竟只是在网上copy了转码的代码。

对了,我还直接在windows上试了,也是有乱码。

最后,大家帮忙看看有办法解决吗...

最近编辑记录 hounh (2016-12-13 09:10:01)

离线

#2 2016-12-11 21:35:06

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,384
个人网站

Re: [已解决](不是编码,是xlsx的style)如何解决openpyxl处理xlsx文件时的编码问题。

文件示例和代碼示例呢?

离线

#3 2016-12-11 21:59:56

hounh
会员
注册时间: 2015-03-15
帖子: 47

Re: [已解决](不是编码,是xlsx的style)如何解决openpyxl处理xlsx文件时的编码问题。

依云 说:

文件示例和代碼示例呢?

嗯,我把它放这里了:
https://github.com/doublehou/temp

离线

#4 2016-12-11 22:08:26

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,384
个人网站

Re: [已解决](不是编码,是xlsx的style)如何解决openpyxl处理xlsx文件时的编码问题。

字体问题。openpyxl 保存之后,所有的单元格文本字体都变成宋体了。而有些带符号的原本的字体是 Wingdings。libreoffice 保存之后字体信息应该是有变化,所以状态不太一样。使用 wps 打开还是有不少问题。

建议:用 Windows + COM 接口吧……

离线

#5 2016-12-11 22:56:13

hounh
会员
注册时间: 2015-03-15
帖子: 47

Re: [已解决](不是编码,是xlsx的style)如何解决openpyxl处理xlsx文件时的编码问题。

依云 说:

字体问题。openpyxl 保存之后,所有的单元格文本字体都变成宋体了。而有些带符号的原本的字体是 Wingdings。libreoffice 保存之后字体信息应该是有变化,所以状态不太一样。使用 wps 打开还是有不少问题。

建议:用 Windows + COM 接口吧……

谢谢,那我再试试。

离线

#6 2016-12-13 09:08:52

hounh
会员
注册时间: 2015-03-15
帖子: 47

Re: [已解决](不是编码,是xlsx的style)如何解决openpyxl处理xlsx文件时的编码问题。

首先感谢 @依云 的帮助,说一下我遇到的问题以供参考。
最开始的乱码问题,我以为是编码不同,@依云 指出是字体被替换了。
然后从这个思路,我搜到一个答案说“openpyxl can't handle style of xlsx , you can use pywin32”。
然后发现 " pip search win32 " 可以找到pywin32 ,但是安装不了,所以安装了pypiwin32。
但是不知道怎么用。。。还好搜到一个教程 “ python excel mini cookbook"。
最后遇到了一个问题:经常报错,类似这样:pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, 'Microsoft Excel'
, "Microsoft Excel cannot access the file 'path ... ”
这个使用os.path.abspath(filename)来获得一个路径然后传给pywin32,这样就没问题了。

That's all ,thank you .

离线

页脚