>  기사  >  백엔드 개발  >  Python에서 Excel을 자동화하는 방법

Python에서 Excel을 자동화하는 방법

coldplay.xixi
coldplay.xixi원래의
2020-10-20 09:45:2314771검색

Python으로 Excel을 자동화하는 방법: 먼저 Python 툴킷을 설치한 다음 지정된 파일 경로에서 Excel 테이블을 읽고 특정 작업을 수행한 다음 이를 다른 Excel 파일에 저장하고 마지막으로 [excel_update] 메서드를 호출합니다. ㅋㅋㅋ

1, xl rd: Excel의 전자 테이블 문서 주소에서 데이터 추출: https://xlrd.readthedocs.io/en/latest/

2. xlwt: Excel 스프레드시트 문서 주소에 데이터 쓰기: https://xlwt.readthedocs.org/en/latest / Python에서 Excel을 자동화하는 방법

3. xlutils: Excel 파일 처리를 위한 유틸리티 세트 제공: https://xlutils.readthedocs.io/en/latest/

2. 설치python -m pip install xlrd xlwt xlutils

3. 기본 사용법

Python 운영 Excel 관련 툴킷은 특정 셀의 채우기 스타일, 숫자 유형, 숫자 크기 등을 구체적으로 조작할 수 있습니다. 하지만 Python을 사용하려면 특정 pandas 데이터 처리 기술이 필요합니다. 나중에 pandas 데이터 처리 기술 장이 추가됩니다

1. 지정된 파일 경로에서 Excel 테이블을 읽고 특정 작업을 수행한 다음 다른 Excel에 저장합니다. 파일: result.xlsx

import xlwt
import xlrd
from xlutils.copy import copy
import pandas as pd
from pandas import DataFrame,Series
import os
os.chdir('./')
# 从指定文件路径读取excel表格
df = pd.read_excel('D:/mypaper/data/data.xlsx')
# 查看df内容
# 根据age算出出生年份,增加一列
import datetime
import os
year = datetime.datetime.now().year#获取当前系统时间对应的年份
df['birth'] = year-df['age']
df.to_excel('result.xlsx')#保存到当前工作目录,可以用os.getcwd()查看
#查看下此时df的内容,可以看到已经生成了birth这一列

얼핏 보면 pandas만 사용하는 것 같고, 위에 소개한 세 가지 툴킷은 사용하지 않았습니다. 다음은 Python을 사용하여 Excel

의 기본 레이어를 작동하는 방법을 소개합니다. 2. 셀 연산

# 定义方法:读取指定目录下Excel文件某个sheet单元格的值
def excel_read(file_path,table,x,y):
     data = xlrd.open_workbook(file_path)
     table = data.sheet_by_name(table)
     return table.cell(y,x).value
# 定义方法:单元格值及样式
write_obj_list = []
def concat_obj(cols,rows,value):
    write_obj_list.append({'cols':cols,'rows':rows,'value':value,\
'style':xlwt.easyxf('font: name 宋体,height 280;alignment: horiz centre')})
# 定义方法:合并单元格
def merge_unit(srows,erows,scols,ecols,value):
    write_obj_list.append({'id':'merge','srows':srows,'erows':erows,'scols':scols,\
'ecols':ecols,'value':value,'style':xlwt.easyxf('font: name 宋体,height 280;alignment: horiz centre')})
# 定义方法:更新excel
excel_update(file_path,write_obj_list,new_path):
    old_excel = xlrd.open_workbook(file_path, formatting_info=True)
    #管道作用
    new_excel = copy(old_excel)
    '''
    通过get_sheet()获取的sheet有write()方法
    '''
    sheet1 = new_excel.get_sheet(0)
    '''
    1代表是修改第几个工作表里,从0开始算是第一个。此处修改第一个工作表
    '''
    for item in write_obj_list:
        if 'id' not in item.keys():
            if 'style' in item.keys():
                sheet1.write(item['rows'], item['cols'], item['value'],item['style'])
            else:
                sheet1.write(item['rows'], item['cols'], item['value'])
        else:
            if 'style' in item.keys():
                sheet1.write_merge(item['srows'],item['erows'],item['scols'], item['ecols'], item['value'],item['style'])
            else:
                sheet1.write_merge(item['srows'],item['erows'],item['scols'], item['ecols'], item['value'])
    '''
    如果报错 dict_items has no attributes sort
    把syle源码中--alist.sort() 修改为----> sorted(alist) 
    一共修改2次
    '''
    new_excel.save(file_path)
#参数详解
# srows:合并的起始行数
# erows:合并的结束行数
# scols:合并的起始列数
# ecols:合并的结束列数 
# value:合并单元格后的填充值
# style:合并后填充风格:
#     font: name 宋体
#     height 280;
#     alignment: horiz centre
#     ... 与excel操作基本保持一致

참고: 이 방법은 수행해야 할 작업이 목록에 저장되어 있는 경우에만 사용됩니다. 실제 작업은 excel_update 메서드에서 실행되지 않습니다. 메서드가 호출되어 각 셀에 대해 수행해야 하는 작업 및 채우기 값의 write_obj_list를 전달하고 파일을 저장합니다. file_path

경로는 현재 작업 디렉터리에 원하는 Excel 결과 파일을 생성할 수 있습니다.

참고:

1.write_obj_list는 사용자 정의를 지원합니다2.write_obj_list는 기존 Excel 파일을 읽어서 생성할 수도 있으며 excel_read 메서드에 따라 수정할 수도 있습니다(원본 테이블의 형식은 유지될 수 있음)

파이썬 연산 엑셀 그 밖에도 기본적인 방법들이 많이 있지만 공간의 제약으로 설명하거나 설명하지 않겠습니다. 깊이 있게 공부하고 싶은 분들은 위의 문서 주소를 클릭하시면 됩니다.

파이썬으로 엑셀 셀을 조작하는 방법을 배우고, 위의 방법을 익히면 기본적으로 엑셀에서 자동화된 보고서 작업이 구현됩니다.

위 내용은 Python에서 Excel을 자동화하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.