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

2022-05-23 10:15:51 浏览数 (1)

目录

背景介绍

抓包分析

代码

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


背景介绍

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

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

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


抓包分析

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

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

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

参数解析:

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

返回数据如下:

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

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

至此,分析完了,该网站的转化也没有涉及什么校验或加密,很容易用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即可。

转换后的效果:

0 人点赞