Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

openpyxl과 함께 Python을 사용하여 Excel에서 차트를 만드는 방법은 무엇입니까?

<시간/>

이 포스트에서는 Python - Openpyxl 모듈을 사용하여 Excel에서 차트를 만드는 방법을 보여 드리겠습니다. openpyxl 모듈을 사용하여 막대 차트를 만들기 위한 데이터로 테니스 선수 그랜드슬램 타이틀을 사용하여 Excel 스프레드시트를 처음부터 만들 것입니다.

소개..

Microsoft Office는 더 많은 행과 열 저장을 지원하기 위해 Office 2007에서 .xlsx인 Microsoft Excel 시트에 대한 새로운 확장을 제공하기 시작했습니다. 이 변경으로 인해 Excel 시트가 ZIP 압축을 사용하는 XML 기반 파일 형식으로 이동했습니다. 세상은 Microsoft 스프레드시트에 의해 지배되고 사람들은 다양한 목적으로 스프레드시트를 사용하고 있으며 사용 사례 중 하나는 데이터 시각화입니다.

준비 중..

Openpyxl 모듈의 대안인 Python의 xlrd 모듈은 Excel 형식을 지원하는 데 능숙하지만 이 모듈은 Excel 스프레드시트에서 읽기 전용 작업을 수행할 수 있습니다. openpyxl 모듈은 Excel 시트에서 읽기 및 쓰기 작업을 모두 수행할 수 있습니다.

그것을 하는 방법..

1). 먼저

를 사용하여 openpyxl 모듈을 설치합시다.
pip install openpyxl.

2).새로운 엑셀 스프레드시트 생성을 위한 데이터를 정의합니다.

# import the module
import openpyxl

# Define your file name and data
file_name = "charts.xlsx"
file_data = (['player', 'titles'], ['Federer', 20], ['Nadal', 20], ['Djokovic', 17], ['Murray', 3])

3). 새 Excel 파일을 만듭니다. 이렇게 하면 Sheet

라는 기본 시트가 생성됩니다.
xlsxfile = openpyxl.Workbook()
print(f" *** The sheets inside the excel_file are = {xlsxfile.sheetnames}")
new_workbook = xlsxfile['Sheet']


*** The sheets inside the excel_file are = ['Sheet']

4).이 시트에 테니스 선수 및 그랜드슬램 타이틀에 대한 데이터를 추가합니다.

for row, (player,titles) in enumerate(file_data, 1):
new_workbook['A{}'.format(row)].value = player
new_workbook['B{}'.format(row)].value = titles

5).마지막으로 file_name 파일에 데이터를 저장합니다.

xlsxfile.save(file_name)

6). 파일을 메모리에 로드하고 모든 시트를 나열합니다. 2단계의 일부로 하나의 시트만 만들었습니다.

import openpyxl
excel_file_data = openpyxl.load_workbook(file_name)
excel_file_data.sheetnames


['Sheet']

7). 첫 번째 시트를 가져오고 셀의 값을 가져옵니다(예:A2 및 B2).

sheet_values = excel_file_data['Sheet']
print(f" *** One of the value from the sheet is - {sheet_values['A2'].value} - {sheet_values['B2'].value}")


*** One of the value from the sheet is - Federer - 20

8). 데이터가 차트에 올바르게 삽입되었는지 확인하기 위해 스프레드시트의 모든 행과 열을 출력합니다.

for row in sheet_values:
for cell in row:
print(cell.value)


player
titles
Federer
20
Nadal
20
Djokovic
17
Murray
3

9).Openpyxl.chart에서 참조 모듈인 BarChart를 가져오고 Barchart 개체를 만듭니다.

from openpyxl.chart import BarChart, Reference
chart = BarChart()


#10.
# Fill the basic information like chart title,..

chart.title = "Players & Grand Slams"
chart.y_axis.title = 'Titles'
chart.x_axis.title = 'Tennis Players'


#11.
# Now we will create a reference to the data and append the data to the chart.

data = Reference(sheet_values, min_row=2, max_row=5, min_col=1, max_col=2)
chart.add_data(data, from_rows=True, titles_from_data=True)


#12.
# Finally, Add the chart to the sheet and save the file.

new_workbook.add_chart(chart, "A6")
xlsxfile.save(file_name)
를 저장합니다.

11단계에서는 참조 개체를 통해 2행 1열에서 5행 2열까지 참조 상자를 만듭니다. 이 영역은 데이터가 있는 영역이며, 오프코스 헤더는 제외됩니다.

데이터는 .add_data() 메서드를 사용하여 차트에 추가됩니다. from_rows - 각 행을 다른 데이터 시리즈로 만듭니다. title_from_data - 첫 번째 열을 사용하여 시리즈 이름을 지정합니다.

예시

위에서 설명한 모든 것을 하나로 합칠 것입니다.

"""
Program: Create charts in excel using Python with openpyxl params: NA
output: Creates a chart.xlsx file with tennis players grandslam titles and a barchart representation of the data
"""
# import the module
import openpyxl
# Define your file name and data
file_name = "charts.xlsx"
file_data = ([ 'player' , 'titles' ], [ 'Federer' , 20 ], [ 'Nadal' , 20 ], [ 'Djokovic' , 17 ], [ 'Murray' , 3 ])
# create an excel spreadsheet
xlsxfile = openpyxl . Workbook ()
print ( f " *** The sheets inside the excel_file are = { xlsxfile . sheetnames } " )
new_workbook = xlsxfile [ 'Sheet' ]
for row , ( player , titles ) in enumerate ( file_data , 1 ):
new_workbook [ 'A {} ' . format ( row )] . value = player
new_workbook [ 'B {} ' . format ( row )] . value = titles
# save the spreadsheet
xlsxfile .save ( file_name )
# read the data
 excel_file_data = openpyxl . load_workbook ( file_name )
excel_file_data . sheetnames

sheet_values = excel_file_data [ 'Sheet' ]
print ( f " *** One of the value from the sheet is - { sheet_values [ 'A2' ] . value } - { sheet_values [ 'B2' ] . value } " )
for row in sheet_values :
for cell in row :
print ( cell . value ) # barchart creation from openpyxl.chart
import BarChart , Reference chart = BarChart ()
# Fill the basic information like chart title,..
chart . title = "Players & Grand Slams"
 chart . y_axis . title = 'Titles'
chart . x_axis . title = 'Tennis Players'
# Now we will create a reference to the data and append the data to the chart.
data = Reference ( sheet_values , min_row = 2 , max_row = 5 , min_col = 1 , max_col = 2 )
chart .
 add_data ( data , from_rows = True , titles_from_data = True )
# Finally, Add the chart to the sheet and save the file.
new_workbook . add_chart ( chart , "A6" )
 xlsxfile . save ( file_name )
*** The sheets inside the excel_file are = ['Sheet']
*** One of the value from the sheet is - Federer - 20
player
titles
Federer
20
Nadal
20
Djokovic
17
Murray
3
입니다.

출력

위의 프로그램을 실행하면 아래와 같은 코드와 같은 디렉토리에 chart.xlsx가 생성됩니다.

openpyxl과 함께 Python을 사용하여 Excel에서 차트를 만드는 방법은 무엇입니까?