pq / app.py
changxin's picture
Update app.py
c90cba8
raw
history blame
7.66 kB
import gradio as gr
import pulp
import pandas as pd
import openpyxl
import requests
w_style="""
<style>
footer {visibility: hidden; }
</style>
"""
html_code='''
<iframe src="https://web.powerva.microsoft.com/environments/Default-51a58d6c-4fcf-4b75-8608-d00bf7f244d5/bots/new_bot_830e155fc862429e89683426b31c9bd5/webchat" height="500" frameborder="1" style="width:100%"></iframe>
'''
ht_text='''
<head>
<title>吹牛逼</title>
<link rel="stylesheet" href="https://powerquery.anvil.app/_/theme/pluginsCss.css" />
<link rel="stylesheet" href="https://powerquery.anvil.app/_/theme/plugins.css" />
<link rel="stylesheet" href="https://powerquery.anvil.app/_/theme/luckysheet.css" />
<link rel="stylesheet" href="https://powerquery.anvil.app/_/theme/iconfont.css" />
<script src="https://powerquery.anvil.app/_/theme/plugin.js"></script>
<script src="https://mengshukeji.github.io/LuckysheetDemo/luckysheet.umd.js"></script>
<script src="https://powerquery.anvil.app/_/theme/xlsx.full.min.js"></script>
<script>
$(function () {
var options = {
container: "pq",
functionButton: '<button id="download" class="btn btn-primary" style="padding:3px 6px;font-size: 12px;margin-right: 10px;" onclick="FX()">下载</button>',
title: "畅心测试",
lang: "zh",
userInfo: {userName:"畅心",userImage: "https://pbihub.cn/uploads/images/201809/12/44/LWNFWHW7Gj.png"},
data: [{"name":"sheet1","index":0,"status":1,"order":0,"color":"#ff0066","row":18,"column":12,"celldata":luckysheet.transToCellData([["维度表","度量值名称","表达式"],])}]
}
luckysheet.create(options)
});
function FX(){
var data = that.luckysheet.getAllSheets()[0].data;
var out = XLSX.utils.book_new(),aoa = [[]];
data.forEach(function(rows, index) {
aoa[index] = [];
for(var column = 0; column < rows.length - 1; column++) {
aoa[index][column] = rows[column] ? rows[column] : '';
}
});
var ws = XLSX.utils.aoa_to_sheet(aoa);
XLSX.utils.book_append_sheet(out, ws, 'sheet1');
XLSX.writeFile(out, 'sheet1.xlsx', {});
return true;
}
</script>
</head>
<body>
<div id="md" style="position: absolute;z-index: 1000000;left: 0px;top: 0px;bottom: 0px;right: 0px; background: rgba(255, 255, 255, 0.8); text-align: center;font-size: 40px;align-items:center;justify-content: center;display: none;">Downloading</div>
<p style="text-align:center;"> <input style="font-size:16px;" type="file" id="test" name="test" change="demoHandler" /></p>
<div id="pq" style="margin:0px;padding:0px;position:absolute;width:100%;left: 0px;top: 50px;bottom: 0px;outline: none;"></div>
<script src="https://powerquery.anvil.app/_/theme/luckyexcel.umd.js"></script>
<script>
function demoHandler(){
let upload = document.getElementById("test");
let mask = document.getElementById("md");
if(upload){
window.onload = () => {
upload.addEventListener("change", function(evt){
var files = evt.target.files;
if(files==null || files.length==0){alert("没有待加载文件!");return;}
let name = files[0].name;
let suffixArr = name.split("."), suffix = suffixArr[suffixArr.length-1];
if(suffix!="xlsx"){alert("目前只支持xlsx文档导入!");return;}
LuckyExcel.transformExcelToLucky(files[0], function(exportJson, luckysheetfile){
if(exportJson.sheets==null || exportJson.sheets.length==0){alert("读取失败, 目前不支持xls文件!");return;}
console.log(exportJson, luckysheetfile);
window.luckysheet.destroy();
window.luckysheet.create({
container: 'pq',
showinfobar:false,
data:exportJson.sheets,
title:exportJson.info.name,
userInfo:exportJson.info.name.creator
});
});
});
}
}
}
demoHandler();
</script>
</body>
'''
demo = gr.Blocks()
def fx1(x):
return f"欢迎练习Gradio, {x}!"
def fx2(x,y):
m=pulp.LpProblem()
x=list(map(int,x.split(',')))
t=[pulp.LpVariable('t'+str(i),cat=pulp.LpBinary) for i in range(len(x))]
m+=pulp.lpDot(x,t)
m+=(pulp.lpDot(x,t)==y)
m.solve()
resu={'data':[x[i] for i in range(len(t)) if pulp.value(t[i])]}
return resu
def fx3(x):
df=pd.read_excel(x,header=0,engine='openpyxl')
return df
def fx4(x):
url_s="https://tts.baidu.com/text2audio?tex="+x+"&cuid=baike&lan=ZH&ie=utf-8&ctp=1&pdt=301&vol=9&rate=32&per=0"
return "点击音频文件 [voice]("+url_s+")"
def fx5():
return html_code
def fx6():
return ht_text
with demo:
gr.Markdown(
"""
# WEB APP测试应用!
![执一以为天下式](https://pbihub.cn/uploads/images/201809/23/44/n6xk1x6UnN.gif#pic_center).
""")
with gr.Tabs():
with gr.TabItem("测试1"):
text_input = gr.Textbox(placeholder='请输入测试字符串,如"畅心"',label="请输入测试内容",show_label=True)
text_output = gr.Textbox(label="输出结果",show_label=True)
tj_button = gr.Button("提交>>")
with gr.TabItem("凑数"):
val_input = [gr.Textbox(placeholder='请输入凑数序列,如"1,3,5,10,16,54,32,48,6,7"',label="请输入待凑数序列",show_label=True),gr.Number(value=80,label="请输入凑数和值",show_label=True)]
json_output = gr.JSON(label="输出运算结果",show_label=True)
cs_button = gr.Button("开始凑数>>")
with gr.TabItem("文件交互"):
file_input = gr.File(file_count="single",label="请选择需要读取的excel文件",show_label=True)
table_output = gr.Dataframe(label="输出读取的表格数据",show_label=True)
dq_button = gr.Button("开始读取>>")
with gr.TabItem("TTS"):
TS_input = gr.Textbox(placeholder='请输入测试字符串,如"欢迎测试字符串转语音功能模块"',label="请输入测试内容",show_label=True)
audio_output = gr.Markdown(label="点击生成音频文件",show_label=True)
tts_button = gr.Button("开始转换>>")
with gr.TabItem("Power Virtual Agents"):
pva_button = gr.Button("调用机器人对话>>")
pva_output=gr.HTML(label="机器人聊天窗口",show_label=True)
with gr.TabItem("Luckysheet交互"):
lk_button = gr.Button("调用Luckysheet>>")
lk_output=gr.HTML(label="国产开源表格工具",show_label=True)
tj_button.click(fx1, inputs=text_input, outputs=text_output)
cs_button.click(fx2, inputs=val_input, outputs=json_output)
dq_button.click(fx3, inputs=file_input, outputs=table_output)
tts_button.click(fx4, inputs=TS_input, outputs=audio_output)
pva_button.click(fx5, inputs=[],outputs=pva_output)
lk_button.click(fx6, inputs=[],outputs=lk_output)
demo.launch()