我有一个运行查询并返回一个表的烧瓶应用程序。我想在页面上提供一个按钮,以便用户可以将数据导出为 csv。
问题是查询是基于表单输入动态生成的。
@app.route('/report/<int:account_id>', methods=['GET'])
def report(account_id):
if request == 'GET':
c = g.db.cursor()
c.execute('SELECT * FROM TABLE WHERE account_id = :account_id', account_id=account_id)
entries = [dict(title=row[0], text=row[1]) for row in c.fetchall()]
return render_template('show_results.html', entries=entries)
Run Code Online (Sandbox Code Playgroud)
在 html 方面,它只是一个简单的表格,循环遍历行并呈现它们。我正在使用引导程序进行样式设置,并包含一个 tablesorter jquery 插件。这些都不是真正重要的。我确实尝试过我找到的一个 javascript 导出器,但是由于我的内容是动态呈现的,因此它保存了一个空白的 CSV。
我是否需要做一些 ajax 风格的技巧来从路由中获取一个 csv 对象?
我有这样的代码:
val extractInfo: (Array[Byte] => String) = (fp: Array[Byte]) => {
val parser:Parser = new AutoDetectParser()
val handler:BodyContentHandler = new BodyContentHandler(Integer.MAX_VALUE)
val config:TesseractOCRConfig = new TesseractOCRConfig()
val pdfConfig:PDFParserConfig = new PDFParserConfig()
val inputstream:InputStream = new ByteArrayInputStream(fp)
val metadata:Metadata = new Metadata()
val parseContext:ParseContext = new ParseContext()
parseContext.set(classOf[TesseractOCRConfig], config)
parseContext.set(classOf[PDFParserConfig], pdfConfig)
parseContext.set(classOf[Parser], parser)
parser.parse(inputstream, handler, metadata, parseContext)
handler.toString
}
Run Code Online (Sandbox Code Playgroud)
使用 Apache Tika 从 PDF 解析文本的函数文字。
不过,我想要的是这里的 Try 块,它在 parser.parse 上运行并在无法执行时返回一个空字符串。我不确定如何在 Scala 中构建这种逻辑。