目录
背景介绍
抓包分析
代码
更新 工具已整合到:1061700625/small-tools
背景介绍
有一个呼声很高的转换工具叫:aspose,但是只能试用,虽然看起来很强且用起来简单,但没有一个文档讲明白怎么安装的。其他的转换方式要么收费,要么不提供API。
这里找到一种免费的转换途径,不仅仅支持excel转图片,其他格式转换都可以按照下面代码来实现。(这个网站本质上也是调用的aspose)
网址为:在线转换 Excel (aspose.app)
抓包分析
以下通过抓包查看接口,并包装为Python实现。
1、先准备一个待转换的Excel文档:
2、进入F12并上传文件转换,抓到链接:
参数解析:
- 表单数据:excel文件的二进制数据
- outputType:目标格式,支持很多种:
返回数据如下:
3、点击下载,捕获下载链接:
发现URL中的参数,就是步骤2中FolderName和FileName。
至此,分析完了,该网站的转化也没有涉及什么校验或加密,很容易用Python来模拟。
代码
代码语言:javascript复制import os
import requests
def excel2image(filePath, outputType='JPG'):
fileName = filePath.split(os.sep)[-1]
url = 'https://api.products.aspose.app/cells/conversion/api/ConversionApi/Convert?outputType={}'.format(outputType)
files = {"1": (fileName, open(filePath, "rb"))}
res = requests.post(url=url, files=files).json()
if res['StatusCode'] == 200:
print('>> 文件转换完成')
return res
else:
print('>> 文件转换出错:' str(res))
return None
def downloadFile(fileName, folderName):
url = 'https://api.products.aspose.app/cells/conversion/api/Download/{}?file={}'.format(folderName, fileName)
res = requests.get(url)
if res.status_code == 200:
with open(fileName, 'wb ') as f:
f.write(res.content)
print('>> 下载文件完成')
else:
print('>> 下载文件出错:' res.text)
if __name__ == '__main__':
res = excel2image('test.xlsx')
print(res)
if res:
downloadFile(res['FileName'], res['FolderName'])
如果想转为其他类型,改一改outputType即可。
转换后的效果: