Структура исходного кода

class simple_report.core.cursor.AbstractCalculateNextCursor[source]

Класс, который занимается работой по вычислению курсоров

calculate_indent(column, w)[source]
Подсчет сдвига колонки
Parameters:
  • column – колонка
  • w – ширина сдвига
Result:

колонка после сдвига

get_first_column()[source]

Вычисление первой колонки

get_first_row()[source]

Вычисление первой строки

get_next_column(current_col, end_col, begin_col)[source]
Вычисление следующей колонки
Parameters:
  • current_col – текущая колонка
  • end_col – конечная колонка
  • begin_col – начальная колонка
Result:

следующая колонка

get_next_cursor(cursor, begin, end, oriented, section=None)[source]

сursor - текущее положение курсора begin - начало секции end - конец секции oriented - ориентация вывода

class simple_report.core.cursor.AbstractCursor[source]

Абстрактный курсор для табличных отчетов.

column[source]
row[source]
Строка
Result:номер строки
class simple_report.core.document_wrap.BaseDocument[source]

Базовый класс для всех документов

build()[source]
Сборка документа
Result:
class simple_report.core.document_wrap.DocumentOpenXML(src_file, tags)[source]

Базовый класс для работы со структурой open xml

build(dst_file)[source]

Сборка отчета

class simple_report.core.document_wrap.SpreadsheetDocument[source]
get_section(name)[source]

Возвращает секцию по названию шаблона

get_sections()[source]

Возвращает все секции в шаблоне

sheets[source]

Листы отчета

workbook[source]

Рабочая книга

class simple_report.core.shared_table.SharedStringsTable(root)[source]

Таблица общих строк

get_new_index(value_string)[source]

Возвращаем индекс нового элемента таблицы shared string Ищем в множестве, иначе получаем нелинейное время flush секции

get_new_index_old(value_string)[source]

Возвращаем индекс нового элемента таблицы shared string

get_value(index)[source]
Parameters:index – индекс
Result:значение ячейки по индексу
to_xml()[source]
Переводит таблицу в xml
Result:корневой узел xml
class simple_report.core.tags.TemplateTags(**kw)[source]

Шаблонные теги

Используется для того, чтобы задавать константы в шаблоне. Например, текущая дата будет задаваться через константу DATE_TIME, произвольные константы можно передавать через конструктор

get(key)[source]
Получение значений из словаря тегов
Parameters:key – ключ словаря
Result:значение словаря
class simple_report.core.xml_wrap.App(rel_id, folder, file_name, file_path)[source]
class simple_report.core.xml_wrap.CommonProperties(tags, *args, **kwargs)[source]

Общие настройки

Находит папку _rels и парсит файл .rels в нем

APP_TYPE = None
NS = 'http://schemas.openxmlformats.org/package/2006/relationships'
classmethod create(folder, tags)[source]
Получение экземпляра класса
Parameters:
  • cls – класс
  • folder – путь до директории с распакованным XML-документом
  • tags – теги
Result:

Экземпляр класса

walk()[source]

Проход по корневому элементу

class simple_report.core.xml_wrap.Core(rel_id, folder, file_name, file_path)[source]
class simple_report.core.xml_wrap.OpenXMLFile(rel_id, folder, file_name, file_path)[source]

Файл XML в структуре OpenXML

NS = None
classmethod create(*args, **kwargs)[source]

Инстанцирование класса

classmethod from_file(file_path)[source]
Парсинг файла
Parameters:
  • cls
  • file_path – путь до файла
Result:

корневой элемент

get_root()[source]
Получение корневого элемента
Result:корневой элемент
class simple_report.core.xml_wrap.ReletionOpenXMLFile(*args, **kwargs)[source]

Файл связей

RELETION_EXT = '.rels'
RELETION_FOLDER = '_rels'
class simple_report.core.xml_wrap.ReletionTypes[source]

Типы связей

APP = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties'
CALC_CHAIN = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/calcChain'
COMMENTS = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments'
CORE = 'http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties'
DRAWING = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing'
MAIN = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument'
SHARED_STRINGS = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings'
WORKBOOK_STYLE = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles'
WORKSHEET = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet'
class simple_report.xlsx.cursor.CalculateNextCursorXLSX[source]

Вычисление следующего курсора

calculate_indent(column, w)[source]

Получение колонки на w раньше чем column

Parameters:
  • column (str) – строковое представление колонки
  • w (int) – смещение
get_first_column()[source]

Получение первой колонки

get_first_row()[source]

Получение первой строки

get_next_column(current_col, end_col, begin_col)[source]

Получение следующей колонки

Parameters:
  • current_col (str) – текущая колонка
  • end_col (str) – конечная колонка
  • begin_col (str) – начальная колонка
class simple_report.xlsx.cursor.Cursor(column=None, row=None)[source]

Специализированный курсор для XLSX таблиц.

class simple_report.xlsx.document.DocumentXLSX(*args, **kwargs)[source]

Обертка для работы с форматом XLSX

build(dst_file)[source]

Сохранение отчета в файл

Parameters:dst_file (str) – путь до выходного файла
workbook[source]

Книга для таблицы

class simple_report.xlsx.formula.Formula(formula)[source]

Изменение формулы для последующего вывода

cell_coord = '[$]?[A-Z]+[$]?[1-9][0-9]*'
cell_coordinates_re = <_sre.SRE_Pattern object at 0x7f6c82194b20>
col_ind = '[A-Z]+'
col_re = <_sre.SRE_Pattern object at 0x7f6c82388670>
classmethod get_instance(formula)[source]

Получение формулы :param formula: :type formula:

get_next_formula(row, column)[source]

Изменяем формулу и отдаём

row_ind = '[1-9][0-9]*'
row_re = <_sre.SRE_Pattern object at 0x7f6c80c34738>
class simple_report.xlsx.section.MergeXLSX(parent_section, child_section, params, oriented=3)[source]

Менеджер контекста для объединения ячеек

class simple_report.xlsx.section.Section(sheet_data, name, begin=None, end=None)[source]

Секция отчета

flush(params, oriented=3, used_formulas=None)[source]

Вывод. Имеется два механизма вывода. Для использования старого не передавать direction

Parameters:
  • params (dict) – параметры замены
  • oriented (ISpreadsheetSection) – направление ориентации
  • used_formulas (dict) – использованные формулы
get_all_parameters()[source]

Возвращает все параметры секции

get_width()[source]

Получение ширины секции

class simple_report.xlsx.section.SheetData(sheet_xml, tags, cursor, ns, shared_table)[source]
self.read_data:
<sheetData>
<row collapsed=”false” customFormat=”false” customHeight=”false” hidden=”false” ht=”12.8” outlineLevel=”0” r=”5”>
<c r=”C5” s=”1” t=”s”>
<v>0</v>

</c> <c r=”D5” s=”1”/> <c r=”E5” s=”1”/>

</row> <row collapsed=”false” customFormat=”false” customHeight=”false” hidden=”false” ht=”12.8” outlineLevel=”0” r=”6”>

<c r=”C6” s=”0” t=”s”>
<v>1</v>

</c>

</row>

</sheetData>

self.read_dimension:
<dimension ref=”B5:I10”/>
self.read_merge_cell:
<mergeCells count=”1”>
<mergeCell ref=”C5:E5”/>

</mergeCells>

Данные для подобных write атрибутов должны быть такой же структуры

COLUMN_INDEX = <_sre.SRE_Pattern object at 0x7f6c82388670>
FIND_PARAMS = <_sre.SRE_Pattern object at 0x1854b20>
FIND_TEMPLATE_TAGS = <_sre.SRE_Pattern object at 0x16da420>
PREFIX_TAG = '%'
ROW_INDEX = <_sre.SRE_Pattern object at 0x7f6c80c34738>
XPATH_TEMPLATE_CELL = '*[@r="%s"]'
XPATH_TEMPLATE_ROW = '*[@r="%d"]'
cursor[source]

Курсор

find_all_parameters(begin, end)[source]

Получение всех параметров

Parameters:
  • begin (2-tuple) – начальная ячейка
  • end (2-tuple) – конечная ячейка
flush(begin, end, start_cell, params, used_formulas=None)[source]

Вывод секции :param begin: Начало секции, пример (‘A’, 1) :param end: Конец секции, пример (‘E’, 6) :param start_cell: ячейка с которой надо выводить :param params: данные для вывода

get_cell_end(cell_addr)[source]

Получение (правого нижнего) конца ячейки

Parameters:cell_addr (2-tuple) – адрес ячейки
get_colbreaks()[source]

Получение разрывов колонок

get_rowbreaks()[source]

Получение разрывов строк

last_section[source]

Последняя секция

new_sheet()[source]
prepare_merge(begin_new_merge, end_new_merge)[source]

Если в документе имеются объединенные ячейки и мы добавляем свою область перес. данную, то необходимо прежде всего удалить, то что уже имеется.

Parameters:
  • begin_new_merge (2-tuple) – начало диапазона
  • end_new_merge (2-tuple) – конец диапазона
set_columns_width(begin, end, start_cell)[source]

Копирование ширины колонок :param begin: начало секции, пример (‘A’, 1) :type begin: 2-tuple :param end: конец секции, пример (‘E’, 6) :type end: 2-tuple :param start_cell: ячейка с которой выводилась секция :type start_cell: 2-tuple

set_dimension()[source]

Установка диапазона

set_merge_cells(section_begin, section_end, start_cell)[source]

Объединение ячеек

Parameters:
  • section_begin (2-tuple) – начало секции
  • section_end (2-tuple) – конец секции
  • start_cell (2-tuple) – стартовая ячейка
set_pagebreaks(begin, end, start_cell)[source]

Копирование разделителей страниц :param begin: начало секции, пример (‘A’, 1) :type begin: 2-tuple :param end: конец секции, пример (‘E’, 6) :type end: 2-tuple :param start_cell: ячейка с которой выводилась секция :type start_cell: 2-tuple

set_section(begin, end, start_cell, params, used_formulas=None)[source]

Вывод секции

Parameters:
  • begin (2-tuple) – начальная ячейка секции
  • end (2-tuple) – конечная ячейка секции
  • start_cell (2-tuple) – стартовая ячейка (с которой начинается запись)
  • params (dict) – параметры отчета
  • used_formulas (dict) – используемые формулы

Created on 24.11.2011

@author: prefer

class simple_report.xlsx.spreadsheet_ml.CalcChain(rel_id, folder, file_name, file_path)[source]

Цепочка вычислений. Указывает порядок вычислений в ячейках а также является кешем значений. (http://stackoverflow.com/questions/9004848/working-with-office-open-xml-just-how-hard-is-it) Поскольку довольно сложно в автоматическом режиме указывать порядок вычисления, просто удаляем файл + ссылки на него. Еще 1 плюс такого подхода - больше не должна повторяться ошибка при открытии файла в MS Office 2007/2010, шаблон которого был сохранен то в Libre/Openoffice, то в MS Office

NS = 'http://schemas.openxmlformats.org/spreadsheetml/2006/main'
build()[source]

Удаляем файл с цепочкой вычислений

classmethod from_file(file_path)[source]
class simple_report.xlsx.spreadsheet_ml.Comments(sheet_data, *args, **kwargs)[source]

Комментарии в XLSX

NS = 'http://schemas.openxmlformats.org/spreadsheetml/2006/main'
NS_XDR = 'http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing'
build()[source]

Сборка файла с комментариями, предварительно удалив их

classmethod create(cursor, *args, **kwargs)[source]
get_section(section_name)[source]

Получение секции по имени

Parameters:section_name
get_sections()[source]

Получение всех секций

section_pattern = <_sre.SRE_Pattern object at 0x1756670>
class simple_report.xlsx.spreadsheet_ml.CommonPropertiesXLSX(tags, *args, **kwargs)[source]
class simple_report.xlsx.spreadsheet_ml.SharedStrings(*args, **kwargs)[source]

XML-файл с общими строками, на каждую из которых могут ссылаться из других xml-файлов XLSX

NS = 'http://schemas.openxmlformats.org/spreadsheetml/2006/main'
build()[source]

Сборка файла

class simple_report.xlsx.spreadsheet_ml.Workbook(tags, *args, **kwargs)[source]

Книга в формате XLSX

NS = 'http://schemas.openxmlformats.org/spreadsheetml/2006/main'
NS_R = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships'
active_sheet[source]
build()[source]
get_colbreaks()[source]
get_rowbreaks()[source]
get_section(name)[source]
get_sections()[source]
shared_table[source]
walk(sheet_reletion)[source]
walk_reletions()[source]
class simple_report.xlsx.spreadsheet_ml.WorkbookSheet(shared_table, tags, name, sheet_id, *args, **kwargs)[source]

Лист книги документа в формате XLSX

NS = 'http://schemas.openxmlformats.org/spreadsheetml/2006/main'
NS_R = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships'
build()[source]

Сборка xml-файла

get_colbreaks()[source]
get_rowbreaks()[source]
get_section(name)[source]

Получение секции по имени

get_sections()[source]

Получение всех секций

sections[source]
walk_reletion()[source]
class simple_report.xlsx.spreadsheet_ml.WorkbookStyles(rel_id, folder, file_name, file_path)[source]

Unused

class simple_report.xls.cursor.CalculateNextCursorXLS[source]

Получение следующего курсора

calculate_indent(column, w)[source]
Вычисление сдвига
Parameters:
  • column – колонка
  • w – ширина сдвига
Result:

разница между номером колонки и шириной сдвига

get_first_column()[source]
Получение первой колонки
Result:номер первой колонки
get_first_row()[source]
Получение первой строки
Result:номер первой строки
get_next_column(current_column, end_col, begin_col)[source]
Получение следующей колонки
Parameters:
  • current_column – текущая колонка
  • end_col – конечная колонка
  • begin_col – начальная колонка
Result:

следующая колонка

class simple_report.xls.cursor.CursorXLS(column=None, row=None)[source]

Специализированный курсор для XLS таблиц

class simple_report.xls.document.DocumentXLS(ffile, tags=None, **kwargs)[source]

Обертка для отчетов в формате XLS

build(dst)[source]
Сборка отчета
Parameters:dst – путь до выходного файла
Result:
workbook[source]
Получение рабочей книги
Result:рабочая книга
class simple_report.xls.section.MergeXLS(parent_section, child_section, params, oriented=3)[source]

Конструкция Merge

class simple_report.xls.section.Section(sheet, name, begin, end, writer)[source]

Класс секции отчета в xls

calc_next_cursor(oriented=3)[source]

Вычисляем следующее положение курсора.

create_font(rd_font_index)[source]
Создание шрифта
Parameters:rd_font_index – индекс шрифта в исходном файле
Result:шрифт в выходном файле
flush(params, oriented=3, used_formulas=None)[source]
Запись секции в отчет
Parameters:
  • params – словарь с параметрами подстановки
  • oriented – направление вывода секции
  • used_formulas – используемые формулы - нужны для записи

простых формул в отчет :result: None

get_all_parameters()[source]
Получение всех параметров секции.
Result:None
get_cell_final_type(value, cell_type)[source]

Окончательный тип значения ячейки. Нужна, для того, чтобы точно определить, является ли ячейка числовой

get_font(font_index)[source]
Получение шрифта по индексу
Parameters:font_index – индекс шрифта
Result:шрифт
get_rich_text_list(text, runlist, default_font)[source]
получение списка строк для rich_text
Parameters:
  • text
  • runlist
  • default_font
Result:
get_value_type(value, default_type=1)[source]
Возвращаем тип значения для выходного элемента
Parameters:
  • value – значение
  • default_type – тип по умолчанию
Result:

тип ячейки

get_width()[source]

Получение ширины секции

write_result(write_coords, value, style, cell_type, (runlist, rdrowx, rdcolx))[source]
Выводим в ячейку с координатами write_coords значение value.
Parameters:
  • write_coords – координаты ячейки
  • value – значение
  • style – стиль вывода
  • cell_type – тип ячейки
  • runlist
  • rdrowx – строка в исходном файле
  • rdcolx – колонка в исходном файле
class simple_report.xls.section.XLSImage(path)[source]

Рисунок. Может быть использован при записи в секцию методом flush

class simple_report.xls.workbook.Workbook(ffile, *args, **kwargs)[source]
active_sheet[source]
build(dest_file)[source]
Сборка книги
Parameters:dest_file – выходной путь
Result:None
configure_writer()[source]

Настройка конфигураций writer-а

get_section(name)[source]
Получение секции по имени
Parameters:name – имя секции
Result:секция
get_sections()[source]
Получение всех секций
Result:словарь с секциями
get_sheet_name()[source]
init_active_sheet()[source]
инициализация активного листа
Result:None
write_sheet_count()[source]

Подсчитываем количество листов в которых есть секции (другими словами в них будет производиться запись)

class simple_report.xls.workbook.WorkbookSheet(sheet, writer)[source]
END_STRING = '\n'
get_name()[source]
Получение названия листа
Result:название листа
get_section(name)[source]
Получение секции по имени
Parameters:name – имя секции
Result:секция
get_sections()[source]
Получение всех секций
Result:словарь секций

Created on 24.11.2011

@author: prefer

class simple_report.docx.document.DocumentDOCX(*args, **kwargs)[source]

Отчет в формате docx

build(dst_file)[source]

Сборка отчета

Param:dst_file: путь до выходного файла
Type:dst_file: str
get_all_parameters()[source]

Получение всех параметров

get_section(section_name)[source]

Получение секции из таблицы в docx

Param:section_name: название секции
Type:section_name: str
set_params(*args, **kwargs)[source]

Установка параметров отчета

word[source]
class simple_report.docx.wordprocessing_ml.CommonPropertiesDOCX(tags, *args, **kwargs)[source]
class simple_report.docx.wordprocessing_ml.ContentTypesXMLFile(tags, *args, **kwargs)[source]

Типы объектов

FILENAME = '[Content_Types].xml'
NS = 'http://schemas.openxmlformats.org/package/2006/content-types'
build()[source]
classmethod create(folder, tags)[source]
Получение экземпляра класса
Parameters:
  • cls – класс
  • folder – путь до директории с распакованным XML-документом
  • tags – теги
Result:

Экземпляр класса

class simple_report.docx.wordprocessing_ml.DocumentRelsXMLFile(tags, *args, **kwargs)[source]
FILENAME = 'document.xml.rels'
NS = ''
build()[source]
classmethod create(folder, tags)[source]
Получение экземпляра класса
Parameters:
  • cls – класс
  • folder – путь до директории с распакованным XML-документом
  • tags – теги
Result:

Экземпляр класса

next_rid()[source]
class simple_report.docx.wordprocessing_ml.Section(table)[source]

Секция таблицы docx документа. Поддерживает ограниченное число операций В частности, строчки таблицы выводятся полностью, т.е. минимальной единицей секции является строка таблицы

append(table_row)[source]
flush(params)[source]
class simple_report.docx.wordprocessing_ml.Wordprocessing(tags, *args, **kwargs)[source]

Основной файл формата DOCX

NS_W = 'http://schemas.openxmlformats.org/wordprocessingml/2006/main'
TABLES_QUERY = './/{0}:tbl'
TABLE_TEXT_NODE_QUERY = './/{0}:tc/{0}:p/{0}:r/{0}:t'
XPATH_QUERY = './/{0}:p/{0}:r/{0}:t'
build()[source]

Сборка файла

get_all_parameters()[source]

Получение всех параметров

get_section(section_name)[source]
Получение секции таблицы в документе DOCX по имени
Parameters:section_name – имя секции
Result:секция
get_signature(node)[source]
get_tables()[source]

Получаем таблицы в DOCX

merge_same_nodes()[source]
Слияние одинаковых нод - нужно, т.к. редакторы DOCX

привносят свои специфичные изменения, которые нам не нужны :result:

set_docx_table_sections()[source]
установка секций таблиц в документах DOCX
Result:None
set_params(params)[source]
Подстановка параметров
Parameters:params – параметры подстановки
Result:None
simple_report.rtf.api.convert_dict(dictionary)[source]

Конвертирует значения из словаря в пригодные для записи в rtf-файл

simple_report.rtf.api.do_replace(text, params)[source]

Ищет знаки ‘#’ в тексте rtf-шаблона и подставляет значения из словаря

class simple_report.rtf.document.DocumentRTF(src_file, tags)[source]

Обертка для документов в формате RTF

build(dst_file)[source]

Построение отчета - заполнение данными

set_params(params)[source]

Подстановка параметров :param params: словарь с параметрами отчета :result: None