import pandas as pd import gradio as gr def create_vcf(row): vcf_template = """BEGIN:VCARD VERSION:3.0 PRODID:-//Apple Inc.//iPhone OS 17.2.1//EN N:{name} ORG:BAT Bangladesh;{function} TITLE:{designation} TEL;type=CELL;type=VOICE;type=pref:{number} EMAIL:{email} END:VCARD""" return vcf_template.format( name=row['Name'], function=row['Function'], designation=row['Designation'], number=row['Number'], email=row['Email'] ) def generate_vcf(file): df = pd.read_excel(file) df['Number'] = df['Number'].astype(str) # Ensure phone numbers are strings vcf_data = df.apply(create_vcf, axis=1).str.cat(sep='\n\n') vcf_file_name = '/tmp/BAT New Contacts.vcf' with open(vcf_file_name, 'w') as vcf_file: vcf_file.write(vcf_data) return vcf_file_name # Define custom CSS and HTML css = """ .gradio-container { background: rgb(14, 43, 99); display: flex; flex-direction: column; align-items: center; color: #fff; /* Text color for better readability */ padding: 20px; /* Padding for the container */ } .gradio-input, .gradio-output { background: rgb(28, 56, 113); color: #fff; /* Text color for input and output fields */ } footer { display: none !important; } """ html_content = """
Upload an Excel file containing contact information in the following format: Name, Designation, Function, GRADE, Email, Number. The output will be a VCF file containing the contact information.
""" with gr.Blocks(css=css) as demo: gr.HTML(html_content) gr.Interface( fn=generate_vcf, inputs=gr.File(label="Upload Excel File"), outputs=gr.File(label="Download VCF File"), ) demo.launch()