Você está na página 1de 16

Criando Arquivo

import xlsxwriter as xls


import os
import datetime

#FILENAME = 'filesExcel/criando_arquivo.xlsx'
FILENAME = 'criando_arquivo.xlsx'
workbook = xls.Workbook(FILENAME) # Cria um arquivo com determinado nome
worksheet = workbook.add_worksheet() # Se nenhum nome for fornecido irá utilizar um padrão
worksheet = workbook.add_worksheet("xxx")
worksheet = workbook.add_worksheet()

workbook.set_properties({
'title': 'Título',
'subject': 'Propriedades do Documento',
'author': 'Robert Ribeiro',
'manager': 'Gerente',
'company': 'Empresa',
'category': 'Categoria',
'keywords': 'Palavra chave 1, palavra chave 2',
'created': datetime.date(2018, 1, 1),
'comments': 'Comentários'})

workbook.close()
os.startfile(FILENAME)

Escrevendo
import xlsxwriter
import os

FILENAME = 'files\\escrevendo_nas_celulas.xlsx'
workbook = xlsxwriter.Workbook(FILENAME) # Cria um arquivo com determinado nome
worksheet = workbook.add_worksheet() # Se nenhum nome for fornecido irá utilizar um padrão

worksheet.write('A1','A1')
worksheet.write(1,1,'B2')
worksheet.write_row('C3',[1,2,3])
worksheet.write_row(3,1,['texto1','texto2','texto3'])
worksheet.write_column('A2',[5,7,9])
worksheet.write_column(0,5,[0,10,100])

workbook.close()
os.startfile(FILENAME)
Altura / Comprimento
import os
import xlsxwriter
FILENAME = 'files\\formatando_altura_largura.xlsx'
workbook = xlsxwriter.Workbook(FILENAME)
worksheet = workbook.add_worksheet()

for i in range(81):
worksheet.write(i%9,i//9,'xxxx')

worksheet.set_row(0,10)
worksheet.set_column(2,2,20)
worksheet.set_column('H:M',20)

workbook.close()
os.startfile(FILENAME)
Gráfico
# Exemplo Simples: Escreve alguns dados na planilha e criamos um gráfico
import xlsxwriter
import os
FILENAME = 'files\\chart.xlsx'
workbook = xlsxwriter.Workbook(FILENAME)
worksheet = workbook.add_worksheet()

chart = workbook.add_chart({'type': 'column'})

data = [
[1, 2, 3, 4, 5],
[2, 4, 6, 8, 10],
[3, 6, 9, 12, 15],
]
worksheet.write_row('A1',['Série 1','Série 2','Série 3'])
worksheet.write_column('A2', data[0])
worksheet.write_column('B2', data[1])
worksheet.write_column('C2', data[2])

chart.add_series({'values': '=Sheet1!$A$2:$A$6'})
chart.add_series({'values': '=Sheet1!$B$2:$B$6'})
chart.add_series({'values': '=Sheet1!$C$2:$C$6'})

worksheet.insert_chart('E1', chart)

workbook.close()
os.startfile(FILENAME)
# Gráficos de dispersão porém criado manualmente.
# ( O Ideal é criar utilizando laços para reduzir o código e melhorar a manutenção)

import xlsxwriter
import os

FILENAME = 'files\\chart_scatter.xlsx'

workbook = xlsxwriter.Workbook(FILENAME)
worksheet = workbook.add_worksheet()
bold = workbook.add_format({'bold': 1})

headings = ['Número', 'Dados 1', 'Dados 2']


data = [
[2, 3.5, 4, 5, 6, 7],
[10, 40, 50, 20, 10, 50],
[30, 60, 70, 50, 40, 30],
]

worksheet.write_row('A1', headings, bold)


worksheet.write_column('A2', data[0])
worksheet.write_column('B2', data[1])
worksheet.write_column('C2', data[2])

# Apenas os pontos com os dados


chart1 = workbook.add_chart({'type': 'scatter'})

chart1.add_series({
'name': '=Sheet1!$B$1',
'categories': '=Sheet1!$A$2:$A$7',
'values': '=Sheet1!$B$2:$B$7',
})
# Forma alternativa para adicionar os valores
chart1.add_series({
'name': ['Sheet1', 0, 2],
'categories': ['Sheet1', 1, 0, 6, 0],
'values': ['Sheet1', 1, 2, 6, 2],
})

worksheet.insert_chart('D2', chart1, {'x_offset': 25, 'y_offset': 10})

# Linhas retas com marcadores

chart2 = workbook.add_chart({'type': 'scatter',


'subtype': 'straight_with_markers'})
chart2.add_series({
'name': '=Sheet1!$B$1',
'categories': '=Sheet1!$A$2:$A$7',
'values': '=Sheet1!$B$2:$B$7',
})
chart2.add_series({
'name': '=Sheet1!$C$1',
'categories': '=Sheet1!$A$2:$A$7',
'values': '=Sheet1!$C$2:$C$7',
})
worksheet.insert_chart('L2', chart2, {'x_offset': 25, 'y_offset': 10})

# Linhas retas sem os marcadores

chart3 = workbook.add_chart({'type': 'scatter',


'subtype': 'straight'})
chart3.add_series({
'name': '=Sheet1!$B$1',
'categories': '=Sheet1!$A$2:$A$7',
'values': '=Sheet1!$B$2:$B$7',
})
chart3.add_series({
'name': '=Sheet1!$C$1',
'categories': '=Sheet1!$A$2:$A$7',
'values': '=Sheet1!$C$2:$C$7',
})

worksheet.insert_chart('T2', chart3, {'x_offset': 25, 'y_offset': 10})

# Curva suavizada com marcadores

chart4 = workbook.add_chart({'type': 'scatter',


'subtype': 'smooth_with_markers'})
chart4.add_series({
'name': '=Sheet1!$B$1',
'categories': '=Sheet1!$A$2:$A$7',
'values': '=Sheet1!$B$2:$B$7',
})
chart4.add_series({
'name': '=Sheet1!$C$1',
'categories': '=Sheet1!$A$2:$A$7',
'values': '=Sheet1!$C$2:$C$7',
})

worksheet.insert_chart('D18', chart4, {'x_offset': 25, 'y_offset': 10})

# Linha suavizada sem marcadores

chart5 = workbook.add_chart({'type': 'scatter',


'subtype': 'smooth'})
chart5.add_series({
'name': '=Sheet1!$B$1',
'categories': '=Sheet1!$A$2:$A$7',
'values': '=Sheet1!$B$2:$B$7',
})
chart5.add_series({
'name': '=Sheet1!$C$1',
'categories': '=Sheet1!$A$2:$A$7',
'values': '=Sheet1!$C$2:$C$7',
})

worksheet.insert_chart('L18', chart5, {'x_offset': 25, 'y_offset': 10})

workbook.close()
os.startfile(FILENAME)
# Cria um exemplo simples dos tipos de gráficos suportados pelo xlsxwriter
import xlsxwriter
import os

FILENAME = 'files\\tipos_graficos.xlsx'
workbook = xlsxwriter.Workbook(FILENAME)

tipos_graficos = \
(('area' , ('stacked', 'percent_stacked')),
('bar' , ('stacked', 'percent_stacked')),
('column', ('stacked', 'percent_stacked')),
('line'), ('pie'), ('doughnut'), ('stock'),
('radar', ('with_markers', 'filled')))

data = [
[1, 4, 3, 4, 15],
[2, 3, 9, 7, 11],
[3, 2, 6, 9, 13],
]

for item in tipos_graficos:


name = item if type(item)== str else item[0]
worksheet = workbook.add_worksheet(name)
worksheet.write_row('A1',['Dados 1','Dados 2','Dados 3'])

chart = workbook.add_chart({'type': name })


# Escreve os dados nas células e adiciona o primeiro gráfico
for col in range(3):
worksheet.write_column(1,col, data[col])
chart.add_series({'values': [worksheet.name,1,col,5,col]})

worksheet.insert_chart('A7', chart)

if type(item) == tuple: # Verifica se o gráfico tem subtipo


for r,subitem in enumerate(item[1],start=1):
chart = workbook.add_chart({'type': item[0], 'subtype':subitem})

for col in range(3):


chart.add_series({'values': [worksheet.name,1,col,5,col]})

worksheet.insert_chart(6,8*r, chart)

workbook.close()
os.startfile(FILENAME)
Criando DataFrame
import pandas as pd
import random

# Some sample data to plot.


cat_1 = ['y1', 'y2', 'y3', 'y4']
index_1 = range(0, 21, 1)
multi_iter1 = {'index': index_1}
for cat in cat_1:
multi_iter1[cat] = [random.randint(10, 100) for x in index_1]

# Create a Pandas dataframe from the data.


index_2 = multi_iter1.pop('index')
df = pd.DataFrame(multi_iter1, index=index_2)
df = df.reindex(columns=sorted(df.columns))
Pandas_engine='xlsxwriter'
# Create a Pandas Excel writer using XlsxWriter as the engine.
excel_file = 'files/legendPandas.xlsx'
sheet_name = 'Sheet1'

writer = pd.ExcelWriter(excel_file, engine='xlsxwriter')


df.to_excel(writer, sheet_name=sheet_name)

# Access the XlsxWriter workbook and worksheet objects from the dataframe.
workbook = writer.book
worksheet = writer.sheets[sheet_name]

# Create a chart object.


chart = workbook.add_chart({'type': 'line'})

# Configure the series of the chart from the dataframe data.


for i in range(len(cat_1)):
col = i + 1
chart.add_series({
'name': ['Sheet1', 0, col],
'categories': ['Sheet1', 1, 0, 21, 0],
'values': ['Sheet1', 1, col, 21, col],
})

# Configure the chart axes.


chart.set_x_axis({'name': 'Index'})
chart.set_y_axis({'name': 'Value', 'major_gridlines': {'visible': False}})

# Insert the chart into the worksheet.


worksheet.insert_chart('G2', chart)

# Close the Pandas Excel writer and output the Excel file.
writer.save()
openpyxl
Realizando a leitura de linhas do workbook/worksheet:

from openpyxl import load_workbook


wb1 = load_workbook('arquivos\chartMyTest.xlsx')
ws1 = wb1["sheet_column"]
ws2 = wb1["sheet_line"]

for row in ws1.iter_rows():


print([c.value for c in row])

for row in ws2.iter_rows():


print([c.value for c in row])

wb1.close()
openpyxl
Realizando a leitura de colunas do workbook/worksheet:

from openpyxl import load_workbook


wb1 = load_workbook('arquivos\chartMyTest.xlsx')
ws1 = wb1["sheet_column"]
ws2 = wb1["sheet_line"]

for col in ws1.iter_cols():


print([c.value for c in col])

for col in ws2.iter_cols():


print([c.value for c in col])

wb1.close()
Exemplo Simples: Escreve alguns dados na planilha e criamos um gráfico

import xlsxwriter
import os
FILENAME = 'files\\chartMyTest.xlsx'
workbook = xlsxwriter.Workbook(FILENAME)
worksheet1 = workbook.add_worksheet('sheet_column')
worksheet2 = workbook.add_worksheet('sheet_area')
worksheet3 = workbook.add_worksheet('sheet_bar')
worksheet4 = workbook.add_worksheet('sheet_line')
worksheet5 = workbook.add_worksheet('sheet_pie')
chart1 = workbook.add_chart({'type': 'column'})
chart2 = workbook.add_chart({'type': 'area'})
chart3 = workbook.add_chart({'type': 'bar'})
chart4 = workbook.add_chart({'type': 'line'})
chart5 = workbook.add_chart({'type': 'pie'})
data = [
[1, 2, 3, 4, 5],
[2, 4, 6, 8, 10],
[3, 6, 9, 12, 15],
]
# column
worksheet1.write_row('A1',['Série 1','Série 2','Série 3'])
worksheet1.write_column('A2', data[0])
worksheet1.write_column('B2', data[1])
worksheet1.write_column('C2', data[2])

chart1.add_series({'values': '=sheet_column!
$A$2:$A$6'})
chart1.add_series({'values': '=sheet_column!
$B$2:$B$6'})
chart1.add_series({'values': '=sheet_column!
$C$2:$C$6'})

worksheet1.insert_chart('E1', chart1)
# area
worksheet2.write_row('A1',['Série 1','Série 2','Série 3'])
worksheet2.write_column('A2', data[0])
worksheet2.write_column('B2', data[1])
worksheet2.write_column('C2', data[2])

chart2.add_series({'values': '=sheet_area!$A$2:$A$6'})
chart2.add_series({'values': '=sheet_area!$B$2:$B$6'})
chart2.add_series({'values': '=sheet_area!$C$2:$C$6'})

worksheet2.insert_chart('E1', chart2)
#bar
worksheet3.write_row('A1',['Série 1','Série 2','Série 3'])
worksheet3.write_column('A2', data[0])
worksheet3.write_column('B2', data[1])
worksheet3.write_column('C2', data[2])

chart3.add_series({'values': '=sheet_bar!$A$2:$A$6'})
chart3.add_series({'values': '=sheet_bar!$B$2:$B$6'})
chart3.add_series({'values': '=sheet_bar!$C$2:$C$6'})

worksheet3.insert_chart('E1', chart3)

#line
worksheet4.write_row('A1',['Série 1','Série 2','Série 3'])
worksheet4.write_column('A2', data[0])
worksheet4.write_column('B2', data[1])
worksheet4.write_column('C2', data[2])

chart4.add_series({'values': '=sheet_line!$A$2:$A$6'})
chart4.add_series({'values': '=sheet_line!$B$2:$B$6'})
chart4.add_series({'values': '=sheet_line!$C$2:$C$6'})

worksheet4.insert_chart('E1', chart4)

#pie
worksheet5.write_row('A1',['Série 1','Série 2','Série 3'])
worksheet5.write_column('A2', data[0])
worksheet5.write_column('B2', data[1])
worksheet5.write_column('C2', data[2])

chart5.add_series({'values': '=sheet_pie!$A$2:$A$6'})
chart5.add_series({'values': '=sheet_pie!$B$2:$B$6'})
chart5.add_series({'values': '=sheet_pie!$C$2:$C$6'})

worksheet5.insert_chart('E1', chart5)

workbook.close()
os.startfile(FILENAME)
worksheet.insert_textbox
import xlsxwriter

workbook = xlsxwriter.Workbook('files\\textbox.xlsx')
worksheet = workbook.add_worksheet()

text = 'Formatted textbox'

options = {
'width': 256,
'height': 100,
'x_offset': 10,
'y_offset': 10,

'font': {'color': 'red',


'size': 14},
'align': {'vertical': 'middle',
'horizontal': 'center'
},
'gradient': {'colors': ['#DDEBCF',
'#9CB86E',
'#156B13']},
}

worksheet.insert_textbox('B2', text, options)

workbook.close()
Notações de Formatação
import xlsxwriter
import os

FILENAME = 'files\\notacaoFormatacao.xlsx'
workbook = xlsxwriter.Workbook(FILENAME) # Cria um arquivo com determinado nome
worksheet = workbook.add_worksheet() # Se nenhum nome for fornecido irá utilizar um padrão

#-------------------------------------------------------------------
# worksheet.set_row worksheet.set_column

worksheet.write('A1','Esse é um título na coluna A1')


worksheet.set_row(0, 20) # linha, altura
worksheet.set_column(0,0, 30) # linha,coluna,comprimento

#-------------------------------------------------------------------
# worksheet.merge_range

cell_format = workbook.add_format({'align': 'center', # Horizontal alignment


'valign': 'vcenter', # Vertical alignment
'border': 0}) # sem borda: 0 --- com borda: 1 .. 2 ... n

worksheet.merge_range('B2:E5', "", cell_format)

#-------------------------------------------------------------------
# worksheet.write_rich_string

# Set up some formats to use.


red = workbook.add_format({'color': 'red'})
blue = workbook.add_format({'color': 'blue'})

worksheet.write_rich_string(
'B2','This is ',red, 'red',' and this is ',blue, 'blue',cell_format)

# worksheet.write(1,1,'B2')
# worksheet.write_row('C3',[1,2,3])
# worksheet.write_row(3,1,['texto1','texto2','texto3'])
# worksheet.write_column('A2',[5,7,9])
# worksheet.write_column(0,5,[0,10,100])

workbook.close()
os.startfile(FILENAME)
worksheet.write_formula
import xlsxwriter
import os

FILENAME = 'files\\formulas.xlsx'
workbook = xlsxwriter.Workbook(FILENAME) # Cria um arquivo com determinado nome

cell_format1 = workbook.add_format()
cell_format2 = workbook.add_format()

worksheet = workbook.add_worksheet('exemplo_1') # Se nenhum nome for fornecido irá utilizar


um padrão

cell_format1.set_num_format('0')
cell_format2.set_num_format('0.00')

worksheet.write_row('B1',[20, 10])
worksheet.write_row('B2',[25.7, 93.75, 48.21])

worksheet.write_formula('A1', '=10*B1 + C1', cell_format1, '#DIV/0!')


worksheet.write_formula('A2', '=SUM(B2, C2, D2)', cell_format2, '#DIV/0!')

workbook.close()

os.startfile(FILENAME)

Você também pode gostar