/usr/lib/python2.7/dist-packages/openpyxl/benchmarks/profiling.py is in python-openpyxl 2.3.0-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 | from io import BytesIO
from lxml.etree import xmlfile
import os
from random import randint
from openpyxl import Workbook
from openpyxl.xml.functions import XMLGenerator
def make_worksheet():
wb = Workbook()
ws = wb.active
for i in range(1000):
ws.append(list(range(100)))
return ws
def lxml_writer(ws=None):
from openpyxl.writer.lxml_worksheet import write_rows
if ws is None:
ws = make_worksheet()
out = BytesIO()
with xmlfile(out) as xf:
write_rows(xf, ws)
#with open("lxml_writer.xml", "wb") as dump:
#dump.write(out.getvalue())
#ws.parent.save("lxml_writer.xlsx")
def make_dump_worksheet():
wb = Workbook(write_only=True)
ws = wb.create_sheet()
return ws
def dump_writer(ws=None):
if ws is None:
ws = make_dump_worksheet()
for i in range(1000):
ws.append(list(range(100)))
COLUMNS = 100
ROWS = 1000
BOLD = 1
ITALIC = 2
UNDERLINE = 4
RED_BG = 8
formatData = [[None] * COLUMNS for _ in range(ROWS)]
def generate_format_data():
for row in range(ROWS):
for col in range(COLUMNS):
formatData[row][col] = randint(1, 15)
def styled_sheet():
from openpyxl import Workbook
from openpyxl.styles import Font, Style, PatternFill, Color, colors
wb = Workbook()
ws = wb.active
ws.title = 'Test 1'
red_fill = PatternFill(fill_type='solid', fgColor=Color(colors.RED), bgColor=Color(colors.RED))
empty_fill = PatternFill()
styles = []
# pregenerate relevant styles
for row in range(ROWS):
_row = []
for col in range(COLUMNS):
cell = ws.cell(row=row+1, column=col+1)
cell.value = 1
font = {}
fill = PatternFill()
if formatData[row][col] & BOLD:
font['bold'] = True
if formatData[row][col] & ITALIC:
font['italic'] = True
if formatData[row][col] & UNDERLINE:
font['underline'] = 'single'
if formatData[row][col] & RED_BG:
fill = red_fill
cell.style = Style(font=Font(**font), fill=fill)
#wb.save(get_output_path('test_openpyxl_style_std_pregen.xlsx'))
def read_workbook():
from openpyxl import load_workbook
folder = os.path.split(__file__)[0]
src = os.path.join(folder, "files", "very_large.xlsx")
wb = load_workbook(src)
return wb
def rows(wb):
ws = wb.active
rows = ws.iter_rows()
for r, row in enumerate(rows):
for c, col in enumerate(row):
pass
print((r+1)* (c+1), "cells")
def col_index1():
from openpyxl.cell import get_column_letter
for i in range(1, 18279):
c = get_column_letter(i)
"""
Sample use
import cProfile
ws = make_worksheet()
cProfile.run("profiling.lxml_writer(ws)", sort="tottime")
"""
if __name__ == '__main__':
import cProfile
ws = make_worksheet()
#wb = read_workbook()
#cProfile.run("rows(wb)", sort="tottime")
#cProfile.run("make_worksheet()", sort="tottime")
#cProfile.run("lxml_writer(ws)", sort="tottime")
#generate_format_data()
#cProfile.run("styled_sheet()", sort="tottime")
#ws = make_dump_worksheet()
#cProfile.run("dump_writer(ws)", sort="tottime")
cProfile.run("col_index1()", sort="tottime")
|