File size: 2,516 Bytes
d7527be
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
import gradio as gr
import pandas as pd
from languageexport.crew import LanguagesExport
import tempfile
import os

def process_excel(file, output_name):
    if not file or not output_name.strip():
        return "Please upload a file and provide a valid name.", None, None

    try:
        df = pd.read_excel(file.name)
        table = [df.columns.tolist()] + df.values.tolist()

        result = LanguagesExport().crew().kickoff(inputs={"data": table})
        result_df = pd.DataFrame(data=result["data"][1:], columns=result["data"][0])
        
        temp_dir = tempfile.mkdtemp()
        output_file_path = os.path.join(temp_dir, f"{output_name.strip()}.xlsx")
        result_df.to_excel(output_file_path, index=False)

        return "✅ Export completed successfully!", result_df, output_file_path

    except Exception as e:
        return f"❌ Error: {str(e)}", None, None


def show_input_table(file):
    if file is None:
        return gr.update(visible=True, value=None)
    try:
        df = pd.read_excel(file.name)
        return gr.update(visible=True, value=df)
    except Exception as e:
        return gr.update(visible=True, value=None)

with gr.Blocks() as demo:
    gr.Markdown("# 📄 Language Export Assistant")
    gr.Markdown("Upload an Excel file, define the export filename, and run the export process.")

    with gr.Row():
        file_input = gr.File(label="Upload Excel File", file_types=[".xlsx", ".xls"])
        file_name = gr.Textbox(label="Output file name (without extension)", placeholder="e.g. translated_table")

    run_button = gr.Button("Run Export")

    status_output = gr.Textbox(label="Status", interactive=False)

    # Luôn hiển thị layout, chỉ update nội dung
    with gr.Row():
        table_input = gr.Dataframe(label="Input Table")
        table_output = gr.Dataframe(label="Result Table")
    
    download_output = gr.File(label="Download Result File", visible=False)

    file_input.change(fn=show_input_table, inputs=file_input, outputs=table_input)

    def on_run(file, name):
        status, df, path = process_excel(file, name)
        is_valid_df = df is not None and not df.empty
        return (
            status,
            gr.update(value=df if is_valid_df else None),
            gr.update(value=path if path else None, visible=path is not None),
        )

    run_button.click(on_run, inputs=[file_input, file_name], outputs=[status_output, table_output, download_output])

if __name__ == "__main__":
    demo.launch(share=True)