一、环境准备
1.1 初始化基础Python + Dash
环境
CSDN文档参见:https://blog.csdn.net/yuetaope/article/details/129795264
Bilibili视频参见:https://www.bilibili.com/video/BV1Xc411V7Cp
1.2 本例中使用的第三方包
无
二、本项目B站视频讲解
https://www.bilibili.com/video/BV1aM411M7xe
三、页面效果
四、项目源码
# -*- coding: utf-8 -*-
# @Time : 2023/3/28 18:29
# @Author : 岳涛
# @File : main.py
# @Des :
import dash
import pandas as pd
from dash import html, Input, Output
import feffery_antd_components as fac
app = dash.Dash(__name__)
app.layout = html.Div(
[
html.H1('趣味dash_03:读取Excel文件'),
fac.AntdButton('读取Excel文件', id='btn_read_excel'),
html.Hr(),
html.Div(id='content')
]
)
@app.callback(
Output('content', 'children'),
Input('btn_read_excel', 'nClicks'),
)
def function(nClicks):
if nClicks:
df = read_xlsx()
return fac.AntdTable(
data=df.to_dict('records'),
columns=[{
'title': c,
'dataIndex': c,
'editable': c in ['规格', '数量'],
'renderOptions': {'renderType': 'copyable'} if c in ['规格'] else {},
} for c in df.columns],
sortOptions={
'multiple': 'auto',
'sortDataIndexes': df.columns,
},
filterOptions={
i: {'filterMultiple': True} for i in df.columns
},
pagination={
'pageSize': 10,
'current': 5,
'pageSizeOptions': [5, 10, 15, 20, 25],
'showTotalPrefix': '本次共取得示例数据 ',
'showTotalSuffix': ' 条!😋'
}
)
return dash.no_update
def read_xlsx():
df = pd.read_excel('卫生明细查询.xlsx')
df.fillna('', inplace=True)
return df
if __name__ == '__main__':
app.run_server(debug=True)