1 amazon-s3 xlsx python-3.x openpyxl aws-lambda
我正在使用 aws lambda 和 python 设置一个无服务器 python 应用程序,用于将 csv 文件转换为 excel。
我想将 csv 文件和 Excel 模板文件上传到 s3 存储桶中。然后使用模板文件创建一个 Excel 文件。
我已使用 boto3 成功将 csv 数据读入我的应用程序。现在我想将内容写入excel模板文件中。
我怎样才能做到这一点?
我在某处读到,我们可以将模板文件复制到 s3 中的 /tmp 中并可以写入其中。如果是这样,怎么可能?
使用 lambda,您可以从 S3 下载文件,使用 openpyxl 加载它,然后对其进行修改,然后将其上传到 S3。
\n\nfrom openpyxl import load_workbook\nfrom tempfile import NamedTemporaryFile\nimport boto3\nimport botocore\n\ns3 = boto3.resource(\'s3\')\n\ndef download_file(bucket, key):\n try:\n file = NamedTemporaryFile(suffix = \'.xlsx\', delete=False)\n s3.Bucket(bucket).download_file(key, file.name)\n return file.name\n except botocore.exceptions.ClientError as e:\n if e.response[\'Error\'][\'Code\'] == "404":\n return None\n else:\n raise\n else:\n raise\n\ndef upload_workbook(workbook, bucket, key):\n with NamedTemporaryFile() as tmp:\n workbook.save(tmp.name)\n tmp.seek(0)\n s3.meta.client.upload_file(tmp.name, bucket, key)\n\n\nfile = download_file("your-s3-bucket", "your-s3-key")\nworkbook = load_workbook(file)\n#\xc2\xa0process workbook\n\nupload_workbook(workbook, "your-bucket", "your-key")\n\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
6065 次 |
| 最近记录: |