0
点赞
收藏
分享

微信扫一扫

编程方式实现Excel转为JPG/PDF等格式


目录

​​背景介绍​​

​​抓包分析​​

​​代码​​

更新

工具已整合到:​​1061700625/small-tools​​

编程方式实现Excel转为JPG/PDF等格式_aspose

背景介绍

        有一个呼声很高的转换工具叫:aspose,但是只能试用,虽然看起来很强且用起来简单,但没有一个文档讲明白怎么安装的。其他的转换方式要么收费,要么不提供API。

(后来搜了下,如果是word可以这样安装:pip install aspose-words,但是结果是加水印的。。)

        这里找到一种免费的转换途径,不仅仅支持excel转图片,其他格式转换都可以按照下面代码来实现。(这个网站本质上也是调用的aspose)

编程方式实现Excel转为JPG/PDF等格式_aspose_02

网址为:​​在线转换 Excel (aspose.app)​​

抓包分析

以下通过抓包查看接口,并包装为Python实现。

1、先准备一个待转换的Excel文档:

编程方式实现Excel转为JPG/PDF等格式_aspose_03

 2、进入F12并上传文件转换,抓到链接:

编程方式实现Excel转为JPG/PDF等格式_excel_04

参数解析:

  • 表单数据:excel文件的二进制数据
  • outputType:目标格式,支持很多种:

编程方式实现Excel转为JPG/PDF等格式_python_05


返回数据如下:

编程方式实现Excel转为JPG/PDF等格式_aspose_06

3、点击下载,捕获下载链接:

编程方式实现Excel转为JPG/PDF等格式_格式转换_07

 发现URL中的参数,就是步骤2中FolderNameFileName

至此,分析完了,该网站的转化也没有涉及什么校验或加密,很容易用Python来模拟。

代码

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即可。

转换后的效果:

编程方式实现Excel转为JPG/PDF等格式_格式转换_08

举报

相关推荐

0 条评论