728x90
반응형
import tabula
from openpyxl import Workbook
from openpyxl.styles import PatternFill
import pandas as pd
# PDF 파일에서 표 추출
tables = tabula.read_pdf('체크리스트(모바일접수용).pdf', pages='all', multiple_tables=True, pandas_options={'header': None})
# 엑셀 파일 생성
wb = Workbook()
sheet = wb.active
# 추출한 표를 엑셀에 추가
row_offset = 0
for table in tables:
if not table.empty: # 빈 표는 무시
for row_index, row in enumerate(table.values):
for col_index, cell_value in enumerate(row):
sheet.cell(row=row_index + 1 + row_offset, column=col_index + 1, value=cell_value)
row_offset += len(table.values)
# B, C, D, E 셀의 내용을 병합하여 H 열에 출력하고 노란색 하이라이트 추가
highlight = PatternFill(start_color="FFFF00", end_color="FFFF00", fill_type="solid")
for row in range(1, sheet.max_row + 1):
b_value = sheet.cell(row=row, column=2).value
c_value = sheet.cell(row=row, column=3).value
d_value = sheet.cell(row=row, column=4).value
e_value = sheet.cell(row=row, column=5).value
# NaN 값을 공백으로 처리
b_value = '' if pd.isna(b_value) else b_value
c_value = '' if pd.isna(c_value) else c_value
d_value = '' if pd.isna(d_value) else d_value
e_value = '' if pd.isna(e_value) else e_value
merged_value = f"{b_value} {c_value} {d_value} {e_value}".strip()
sheet.cell(row=row, column=8, value=merged_value)
sheet.cell(row=row, column=8).fill = highlight
# 엑셀 파일 저장
wb.save('체크리스트(모바일접수용).xlsx')
print('추출완료')
# 엑셀 F열 파일명 데이터 나누기로 파일명 2개 각 셀로 분할(공백+",")
728x90
반응형
'직장인' 카테고리의 다른 글
[회사원] 업무코딩 기록 - (PyTesseract) OCR Read_Find(성명)열(계약서)(전처리추가) (0) | 2025.04.03 |
---|---|
[회사원] VS-CODE 유용한 확장프로그램 추천 (0) | 2025.01.13 |
[회사원] 업무 코딩기록 - (Selenium) 웹페이지 로그인, 실행(메일N인송부) (4) | 2024.12.26 |
[회사원] 업무 코딩기록 - (Selenium) 웹페이지 로그인, 실행(메일1인송부) (0) | 2024.12.26 |
[회사원] 업무 코딩기록 - (Selenium) 웹페이지 로그인, 사원검색 (1) | 2024.12.26 |