首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Google App Engine for Python中使用xlsxwriter

在Google App Engine for Python中使用xlsxwriter
EN

Stack Overflow用户
提问于 2013-06-10 04:52:07
回答 2查看 1.5K关注 0票数 3

我想知道是否有人知道如何在Google App Engine for Python中使用xlsxwriter。该文档仅展示了如何打开、写入和保存文件。我已经研究过在其他Excel库中使用StringIO的变通方法,但它们似乎不能移植到xlsxwriter。主要原因似乎是在其他库中可以提供StringIO缓冲区,而在xlsxwriter中只能提供文件名的字符串。

我已经有了一个使用pyexcelerator的基本解决方案,但是xlsxwriter的功能非常丰富,所以如果可能的话,我想使用它。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-23 21:45:02

我最近使用python和xlsxwriter在App Engine上开发了一个项目。我遇到了类似的问题,我找到了一种更好的解决方法,它不需要额外的代码,并且可以在本地系统上运行。

我们可以使用tmp environment -,App Engine中的一个运行时文件系统,它存在于请求/任务队列的生命周期中。

在创建写入器对象时,通过如下所示的/tmp/file

代码语言:javascript
复制
writer = pd.ExcelWriter('/tmp/my_file.xlsx', engine='xlsxwriter')
#
# perform your operations
#
writer.save()

在随后的代码中,您可以读取相同的文件并执行所需的操作,如通过邮件发送或上传,如...

代码语言:javascript
复制
file_path = '/tmp/'+ filename
with open(file_path, 'rb') as f:
    my_file_data = f.read()
    f.close()
票数 3
EN

Stack Overflow用户

发布于 2013-06-11 04:34:43

更新:issue已由xlsxwriter作者修复(自0.4.8版本起生效)。请参阅example

根据我在this thread中的回答,以下是在GAE上应该做的事情:

代码语言:javascript
复制
from xlsxwriter.workbook import Workbook

class IndexHandler(webapp2.RequestHandler):
    def get(self):
        book = Workbook(self.response.out)
        sheet = book.add_worksheet('test')
        sheet.write(0, 0, 'Hello, world!')
        book.close()

        # construct response
        self.response.headers['Content-Type'] = 'application/ms-excel'
        self.response.headers['Content-Transfer-Encoding'] = 'Binary'
        self.response.headers['Content-disposition'] = 'attachment; filename="workbook.xls"'

但是,它抛出了一个错误:

NotImplementedError:只有tempfile.TemporaryFile可用

因为xlsxwriter无论如何都会尝试使用tempfile.tempdir写入临时目录,所以请参见source of _store_workbook方法。而且,GAE不允许在项目中使用tempfile模块:请参阅source,因为如您所知,无法访问那里的磁盘。

所以,这是一个“恶性循环”。也许您应该考虑修改_store_workbook方法,使其完全在内存中工作。或者,您可以动态地mock tempfile.tempdir调用,并将其替换为您自己的内存中对象。

另一个选择是在xlsxwriter issue tracker上创建一个问题,我打赌@jmcnamara在这个问题上有一些很好的想法。

希望这能有所帮助。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17014055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档