python - 如何将 excel 或 csv 文件转换为 django 中的 html 表?
问题描述
我有一个小型应用程序,用户可以在其中提交 excel 或 csv 文件,我想在模板上向用户显示该文件中的数据。我怎样才能做到这一点?
我知道openpyxl和xlrd之类的库,它们都是python库,可以循环遍历文件并显示值,但是将这些值传递给模板似乎工作量太大(如果这是唯一的方法,我会去做)。
还有其他方法吗?这是我到目前为止所拥有的:
def home(request):
if request.method == 'POST':
uploaded_file = request.FILES['my_excel']
# What should I do here?
return (render(request, 'demo/index.html'))
解决方案
我使用 JSON 编码数据和https://handsontable.com来呈现它。
- JSON数据需要转义,但对于我的用例来说,HTML通常更紧凑:您提到的库可以进行读取。
- handsontable 文档非常好,很容易上手https://docs.handsontable.com/pro/3.0.0/tutorial-quick-start.html:
// Django part. let food = {{ data|escapejs }}; // Handsontable example let data = [ ["", "Ford", "Tesla", "Toyota", "Honda"], ["2017", 10, 11, 12, 13], ["2018", 20, 11, 14, 13], ["2019", 30, 15, 12, 13] ]; let container = document.getElementById('example'); let hot = new Handsontable(container, { data: data, rowHeaders: true, colHeaders: true, filters: true, dropdownMenu: true });
生成的表可以使用 hot 提供的广泛的类似电子表格的工具,并且如果需要,很容易与 Ajax 交互。
推荐阅读
- ios - 我可以将不同客户端的 IOS 应用程序发布到一个帐户吗?
- elixir - Ecto 3 - 在自定义 CLI 任务中启动 Repo
- python - Keras 信号处理模型
- jquery - 从 Jquery 数据表中清除自定义过滤器
- c++ - 使用 Windows 中的 GetKeyName() 函数在 C++ 中即时切换键盘布局
- sql - 为什么我的临时表不会填充数据,但其中的 select 语句会?
- node.js - ReferenceError: [tablename] 未定义 | Node.js、Express、Axios、PostgreSQL
- c# - 如何确保用户不会尝试输入已经存在的主键 ID?
- css - 如何根据最大选项宽度设置反应选择宽度?
- json - 如何通过 jq 获取数字对象属性的值?