Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
if 'formula' in rule:
for f in rule['formula']:
tag(doc, 'formula', None, f)
if 'colorScale' in rule:
start_tag(doc, 'colorScale')
for cfvo in rule['colorScale']['cfvo']:
tag(doc, 'cfvo', cfvo)
for color in rule['colorScale']['color']:
if str(color.index).split(':')[0] == 'theme': # strip prefix theme if marked as such
if str(color.index).split(':')[2]:
tag(doc, 'color', {'theme': str(color.index).split(':')[1],
'tint': str(color.index).split(':')[2]})
else:
tag(doc, 'color', {'theme': str(color.index).split(':')[1]})
else:
tag(doc, 'color', {'rgb': str(color.index)})
end_tag(doc, 'colorScale')
if 'iconSet' in rule:
iconAttr = {}
for icon_attr in ConditionalFormatting.icon_attributes:
if icon_attr in rule['iconSet']:
iconAttr[icon_attr] = rule['iconSet'][icon_attr]
start_tag(doc, 'iconSet', iconAttr)
for cfvo in rule['iconSet']['cfvo']:
tag(doc, 'cfvo', cfvo)
end_tag(doc, 'iconSet')
end_tag(doc, 'cfRule')
end_tag(doc, 'conditionalFormatting')
{'xmlns': SHEET_MAIN_NS,
'xmlns:r': REL_NS})
if vba_root is not None:
el = vba_root.find('{%s}sheetPr' % SHEET_MAIN_NS)
if el is not None:
codename =el.get('codeName', worksheet.title)
start_tag(doc, 'sheetPr', {"codeName": codename})
else:
start_tag(doc, 'sheetPr')
else:
start_tag(doc, 'sheetPr')
tag(doc, 'outlinePr',
{'summaryBelow': '%d' % (worksheet.show_summary_below),
'summaryRight': '%d' % (worksheet.show_summary_right)})
if worksheet.page_setup.fitToPage:
tag(doc, 'pageSetUpPr', {'fitToPage':'1'})
end_tag(doc, 'sheetPr')
tag(doc, 'dimension', {'ref': '%s' % worksheet.calculate_dimension()})
write_worksheet_sheetviews(doc, worksheet)
tag(doc, 'sheetFormatPr', {'defaultRowHeight': '15'})
write_worksheet_cols(doc, worksheet, style_table)
write_worksheet_data(doc, worksheet, string_table, style_table)
write_worksheet_autofilter(doc, worksheet)
write_worksheet_mergecells(doc, worksheet)
write_worksheet_datavalidations(doc, worksheet)
write_worksheet_hyperlinks(doc, worksheet)
write_worksheet_conditional_formatting(doc, worksheet)
options = worksheet.page_setup.options
if options:
tag(doc, 'printOptions', options)
if vba_root is not None:
el = vba_root.find('{%s}sheetPr' % SHEET_MAIN_NS)
if el is not None:
codename =el.get('codeName', worksheet.title)
start_tag(doc, 'sheetPr', {"codeName": codename})
else:
start_tag(doc, 'sheetPr')
else:
start_tag(doc, 'sheetPr')
tag(doc, 'outlinePr',
{'summaryBelow': '%d' % (worksheet.show_summary_below),
'summaryRight': '%d' % (worksheet.show_summary_right)})
if worksheet.page_setup.fitToPage:
tag(doc, 'pageSetUpPr', {'fitToPage':'1'})
end_tag(doc, 'sheetPr')
tag(doc, 'dimension', {'ref': '%s' % worksheet.calculate_dimension()})
write_worksheet_sheetviews(doc, worksheet)
tag(doc, 'sheetFormatPr', {'defaultRowHeight': '15'})
write_worksheet_cols(doc, worksheet, style_table)
write_worksheet_data(doc, worksheet, string_table, style_table)
if worksheet.protection.enabled:
tag(doc, 'sheetProtection',
{'objects': '1', 'scenarios': '1', 'sheet': '1'})
write_worksheet_autofilter(doc, worksheet)
write_worksheet_mergecells(doc, worksheet)
write_worksheet_datavalidations(doc, worksheet)
write_worksheet_hyperlinks(doc, worksheet)
write_worksheet_conditional_formatting(doc, worksheet)
options = worksheet.page_setup.options
if options:
attrs['customFormat'] = '1'
start_tag(doc, 'row', attrs)
row_cells = cells_by_row[row_idx]
sorted_cells = sorted(row_cells, key=row_sort)
for cell in sorted_cells:
value = cell._value
coordinate = cell.coordinate
attributes = {'r': coordinate}
if cell.data_type != cell.TYPE_FORMULA:
attributes['t'] = cell.data_type
if coordinate in worksheet._styles:
attributes['s'] = '%d' % style_id_by_hash[
hash(worksheet._styles[coordinate])]
if value in ('', None):
tag(doc, 'c', attributes)
else:
start_tag(doc, 'c', attributes)
if cell.data_type == cell.TYPE_STRING:
tag(doc, 'v', body='%s' % string_table[value])
elif cell.data_type == cell.TYPE_FORMULA:
if coordinate in worksheet.formula_attributes:
attr = worksheet.formula_attributes[coordinate]
if 't' in attr and attr['t'] == 'shared' and 'ref' not in attr:
# Don't write body for shared formula
tag(doc, 'f', attr=attr)
else:
tag(doc, 'f', attr=attr, body='%s' % value[1:])
else:
tag(doc, 'f', body='%s' % value[1:])
tag(doc, 'v')
elif cell.data_type == cell.TYPE_NUMERIC:
hash(worksheet._styles[coordinate])]
if value in ('', None):
tag(doc, 'c', attributes)
else:
start_tag(doc, 'c', attributes)
if cell.data_type == cell.TYPE_STRING:
tag(doc, 'v', body='%s' % string_table[value])
elif cell.data_type == cell.TYPE_FORMULA:
if coordinate in worksheet.formula_attributes:
attr = worksheet.formula_attributes[coordinate]
if 't' in attr and attr['t'] == 'shared' and 'ref' not in attr:
# Don't write body for shared formula
tag(doc, 'f', attr=attr)
else:
tag(doc, 'f', attr=attr, body='%s' % value[1:])
else:
tag(doc, 'f', body='%s' % value[1:])
tag(doc, 'v')
elif cell.data_type == cell.TYPE_NUMERIC:
if isinstance(value, (long, decimal.Decimal)):
func = str
else:
func = repr
tag(doc, 'v', body=func(value))
elif cell.data_type == cell.TYPE_BOOL:
tag(doc, 'v', body='%d' % value)
else:
tag(doc, 'v', body='%s' % value)
end_tag(doc, 'c')
end_tag(doc, 'row')
end_tag(doc, 'sheetData')
if value in ('', None):
tag(doc, 'c', attributes)
else:
start_tag(doc, 'c', attributes)
if cell.data_type == cell.TYPE_STRING:
tag(doc, 'v', body='%s' % string_table[value])
elif cell.data_type == cell.TYPE_FORMULA:
if coordinate in worksheet.formula_attributes:
attr = worksheet.formula_attributes[coordinate]
if 't' in attr and attr['t'] == 'shared' and 'ref' not in attr:
# Don't write body for shared formula
tag(doc, 'f', attr=attr)
else:
tag(doc, 'f', attr=attr, body='%s' % value[1:])
else:
tag(doc, 'f', body='%s' % value[1:])
tag(doc, 'v')
elif cell.data_type == cell.TYPE_NUMERIC:
if isinstance(value, (long, decimal.Decimal)):
func = str
else:
func = repr
tag(doc, 'v', body=func(value))
elif cell.data_type == cell.TYPE_BOOL:
tag(doc, 'v', body='%d' % value)
else:
tag(doc, 'v', body='%s' % value)
end_tag(doc, 'c')
end_tag(doc, 'row')
end_tag(doc, 'sheetData')
def write_worksheet_datavalidations(doc, worksheet):
""" Write data validation(s) to xml."""
# Filter out "empty" data-validation objects (i.e. with 0 cells)
required_dvs = [x for x in worksheet._data_validations
if len(x.cells) or len(x.ranges)]
count = len(required_dvs)
if count == 0:
return
start_tag(doc, 'dataValidations', {'count': str(count)})
for data_validation in required_dvs:
start_tag(doc, 'dataValidation', data_validation.generate_attributes_map())
if data_validation.formula1:
tag(doc, 'formula1', body=data_validation.formula1)
if data_validation.formula2:
tag(doc, 'formula2', body=data_validation.formula2)
end_tag(doc, 'dataValidation')
end_tag(doc, 'dataValidations')
def write_worksheet_datavalidations(doc, worksheet):
""" Write data validation(s) to xml."""
# Filter out "empty" data-validation objects (i.e. with 0 cells)
required_dvs = [x for x in worksheet._data_validations
if len(x.cells) or len(x.ranges)]
count = len(required_dvs)
if count == 0:
return
start_tag(doc, 'dataValidations', {'count': str(count)})
for data_validation in required_dvs:
start_tag(doc, 'dataValidation', data_validation.generate_attributes_map())
if data_validation.formula1:
tag(doc, 'formula1', body=data_validation.formula1)
if data_validation.formula2:
tag(doc, 'formula2', body=data_validation.formula2)
end_tag(doc, 'dataValidation')
end_tag(doc, 'dataValidations')
def write_worksheet_datavalidations(doc, worksheet):
""" Write data validation(s) to xml."""
# Filter out "empty" data-validation objects (i.e. with 0 cells)
required_dvs = [x for x in worksheet._data_validations
if len(x.cells) or len(x.ranges)]
count = len(required_dvs)
if count == 0:
return
start_tag(doc, 'dataValidations', {'count': str(count)})
for data_validation in required_dvs:
start_tag(doc, 'dataValidation', data_validation.generate_attributes_map())
if data_validation.formula1:
tag(doc, 'formula1', body=data_validation.formula1)
if data_validation.formula2:
tag(doc, 'formula2', body=data_validation.formula2)
end_tag(doc, 'dataValidation')
end_tag(doc, 'dataValidations')
attrs['customFormat'] = '1'
start_tag(doc, 'row', attrs)
row_cells = cells_by_row[row_idx]
sorted_cells = sorted(row_cells, key=row_sort)
for cell in sorted_cells:
value = cell._value
coordinate = cell.coordinate
attributes = {'r': coordinate}
if cell.data_type != cell.TYPE_FORMULA:
attributes['t'] = cell.data_type
if coordinate in worksheet._styles:
attributes['s'] = '%d' % style_id_by_hash[
hash(worksheet._styles[coordinate])]
if value in ('', None):
tag(doc, 'c', attributes)
else:
start_tag(doc, 'c', attributes)
if cell.data_type == cell.TYPE_STRING:
tag(doc, 'v', body='%s' % string_table[value])
elif cell.data_type == cell.TYPE_FORMULA:
if coordinate in worksheet.formula_attributes:
attr = worksheet.formula_attributes[coordinate]
if 't' in attr and attr['t'] == 'shared' and 'ref' not in attr:
# Don't write body for shared formula
tag(doc, 'f', attr=attr)
else:
tag(doc, 'f', attr=attr, body='%s' % value[1:])
else:
tag(doc, 'f', body='%s' % value[1:])
tag(doc, 'v')
elif cell.data_type == cell.TYPE_NUMERIC: