CoolFace
Apppublic

lscsc/Process_dash_pub

sourceHugging Faceupdated 2y agoView on Hugging Face
0likes
streamlit_excel_example.py77 linesDownload Raw Back to backup
1import streamlit as st2import pandas as pd3import io4 5st.title("파일 업로드 및 처리 예제")6 7# 탭 생성8tab1, tab2 = st.tabs(["엑셀 파일", "텍스트 파일"])9 10# 엑셀 파일 탭11with tab1:12    uploaded_excel = st.file_uploader("엑셀 파일을 선택하세요", type=["xlsx", "xls"])13 14    if uploaded_excel is not None:15        # 파일이 업로드되면 pandas로 읽기16        try:17            df = pd.read_excel(uploaded_excel)18            st.write("### 업로드된 엑셀 파일 데이터:")19            st.dataframe(df)20            21            # 데이터 처리 예시22            st.write("### 데이터 요약:")23            st.write(f"행 수: {df.shape[0]}, 열 수: {df.shape[1]}")24            25            # 선택적으로 openpyxl을 사용한 처리도 가능26            # openpyxl 사용 예시27            if st.checkbox("openpyxl로 처리하기"):28                import openpyxl29                30                # 업로드된 파일을 바이트 스트림으로 변환31                excel_data = io.BytesIO(uploaded_excel.getvalue())32                33                # openpyxl로 워크북 열기34                wb = openpyxl.load_workbook(excel_data, data_only=True)35                36                # 시트 목록 표시37                st.write("### 워크시트 목록:")38                for sheet_name in wb.sheetnames:39                    st.write(f"- {sheet_name}")40                41                # 첫 번째 시트의 특정 셀 값 읽기 예시42                sheet = wb[wb.sheetnames[0]]43                st.write(f"A1 셀 값: {sheet['A1'].value}")44        45        except Exception as e:46            st.error(f"파일을 처리하는 중 오류가 발생했습니다: {e}")47 48# 텍스트 파일 탭49with tab2:50    uploaded_text = st.file_uploader("텍스트 파일을 선택하세요", type=["txt"])51    52    if uploaded_text is not None:53        try:54            # 인코딩 선택 옵션55            encoding = st.selectbox("인코딩 선택", 56                                   ["utf-8", "euc-kr", "cp949", "ascii", "latin1"],57                                   index=0)58            59            # 파일 내용 읽기60            text_content = uploaded_text.getvalue().decode(encoding)61            62            # 파일 내용 표시63            st.write("### 텍스트 파일 내용:")64            st.text_area("", text_content, height=400)65            66            # 간단한 통계 정보67            st.write("### 텍스트 파일 정보:")68            st.write(f"파일 이름: {uploaded_text.name}")69            st.write(f"파일 크기: {len(uploaded_text.getvalue())} 바이트")70            st.write(f"총 라인 수: {text_content.count(chr(10)) + 1}")71            st.write(f"총 글자 수: {len(text_content)}")72            st.write(f"총 단어 수: {len(text_content.split())}")73            74        except UnicodeDecodeError:75            st.error(f"선택한 인코딩({encoding})으로 파일을 읽을 수 없습니다. 다른 인코딩을 선택해 보세요.")76        except Exception as e:77            st.error(f"파일을 처리하는 중 오류가 발생했습니다: {e}")