본문 바로가기
나를 위한 코드

파이썬 엑셀 데이터 입력하기 (xlsx, csv)

by 라나나 2023. 3. 17.
728x90

openpyxl

읽기,쓰기

속도 느림

 

파일 읽어오기

import openpyxl

wb = openpyxl.load_workbook('파일명')
ws = wb.worksheets[0]

# 전체 row
for cell in list(ws) :
    print(cell[0].value, cell[1].value)
    
# 특정 열 선택
for cell in list(ws.columns)[0] :
    print(cell[0].value)
    
# 특정 행,열 선택
for cell in ws.iter_rows(min_row=1, max_row=10, min_col=1, max_col=1):
    print(cell)
    
wb.close()

 

 

 

# 수식을 제외하고 데이터만 가져오기 data_only=True
wb = load_workbook('파일명', data_only=True)

# 특정 영역 가져오기
for data in ws['A4':'B12']:

# 해당 셀의 몇번째 열일 경우
if cell.column == 1:

파일 생성하고 입력하기

import openpyxl

path = r'C:\test.xlsx'
sheetname = '시트명'

wb = openpyxl.Workbook()
ws = wb.active
ws.title = sheetname

ws['A1'].value = 'dddd'

# 또는 A를 사용하지 않고 아래처럼 쓸 수 있음
ws.cell(row=1, column=1).value = 10 
또는
ws.cell(1, 3).value

wb.save(path)
wb.close()

 

시트 추가하기

wb.create_sheet('')

 

시트 가져오는 여러가지 방법

ws = wb.worksheets[0]

ws = wb.active

ws = wb['시트명']

 

모든 시트명 가져오기

sheets = wb.sheetnames

for sheet in sheets:
    print(sheet)

 

폰트 추가하기

from openpyxl.styles import PatternFill

FILL = PatternFill("solid", start_color="f4cccc", end_color="f4cccc")

ws.column_dimensions['A'].width = 20
ws.row_dimensions[0].height = 50

ws['A1'].fill = FILL

xlsxwriter

쓰기

워크시트 추가, 수정 안 됨, 더 빠름

 

파일에 입력하기

import xlsxwriter

EXCEL_FILENAME = ''
SHEET_NAME = ''

wb = xlsxwriter.Workbook(EXCEL_FILENAME)
ws = wb.add_worksheet(SHEET_NAME)

ws.set_column('A:A', 7)

format = wb.add_format()
format.set_bold()
format.set_pattern(1)
format.set_bg_color('#f4cccc')

ws.write('A1', '번호', format)

wb.close()

# except xlsxwriter.exceptions.FileCreateError:

 

셀 병합하기

format = wb.add_format({
    'bold' : True,
    'border' : True,
    'align' : 'center',
    'valign' : 'vcenter',
    'bg_color' : 'yellow'
})

ws.merge_range('A1:B3', 'test', format)

csv

파일 생성하고 입력하기

import csv

file_name = ''

f = open(file_name, 'w', newline="", encoding='utf-8') # cp949
csvWriter = csv.writer(f) 
csvWriter.writerow(['','',''])

 

파일 읽어오기

f = open('파일명', 'r')
f_read = csv.reader(f_main)
# next(f_main_read) # 첫 줄 패스하기

for line in f_read:
	print(line[0])

 

파일 정렬하기

df = pd.read_csv('파일명', encoding='utf-8')
df = df.sort_values(by=['정렬시킬 컬럼명'])
df.to_csv(exel_file_sort,encoding='utf-8',index=False)

 

행 추가하기

f = open(store_file_nm, 'a', newline="", encoding='utf-8')
csvWriter = csv.writer(f) 
csvWriter.writerow(['','',''])
728x90

댓글