我正在尝试使用允许用户将表数据保存到Excel文件的功能。我试图使用一个旧的技巧,将html表代码保存到文件中,并使用excel扩展名命名该文件,该扩展名应在excel中显示该表。
我有以下代码显示提交按钮:
output = '<form name="export_excel" action="/excel" method="POST">'
output += '<textarea id="in" rows="1" cols="1" name="tableData" class="excelText" value="%s">' % tableData.strip().replace('<','excellt').replace('>', 'excelgt').replace('"','exceldblqt').replace('\'','excelsglqt')
output += '</textarea><input type="submit" value="Export table to Excel" title="Click here to save the table data in Excel file"></form>'
这里我将表数据放入textarea,设置为由样式表隐藏。我将表格数据放入textarea中,以便tableData中的html标签不会破坏当前页面视图。
被调用的函数:excel(tableData)是这样的:
@cherrypy.expose
def excel(self, tableData):
cherrypy.response.headers['Content-Type'] = "application/vnd.ms-excel"
return tableData.replace('excellt','<').replace('excelgt','>').replace('exceldblqt','"').replace('excelsglqt','\'')
这样可以设置上下文类型,提示用户打开/保存excel文件。但似乎返回的值没有进入文件。该文件始终为空。
我假设返回的任何内容都应该流式传输给用户并作为内容进入文件。有任何想法吗?