Структура исходного кода
- class simple_report.core.cursor.AbstractCalculateNextCursor[source]¶
Класс, который занимается работой по вычислению курсоров
- calculate_indent(column, w)[source]¶
- Подсчет сдвига колонки
Parameters: - column – колонка
- w – ширина сдвига
Result: колонка после сдвига
- class simple_report.core.document_wrap.DocumentOpenXML(src_file, tags)[source]¶
Базовый класс для работы со структурой open xml
Таблица общих строк
Возвращаем индекс нового элемента таблицы shared string Ищем в множестве, иначе получаем нелинейное время flush секции
Возвращаем индекс нового элемента таблицы shared string
Parameters: index – индекс Result: значение ячейки по индексу
- Переводит таблицу в xml
Result: корневой узел xml
Шаблонные теги
Используется для того, чтобы задавать константы в шаблоне. Например, текущая дата будет задаваться через константу DATE_TIME, произвольные константы можно передавать через конструктор
- Получение значений из словаря тегов
Parameters: key – ключ словаря Result: значение словаря
- class simple_report.core.xml_wrap.CommonProperties(tags, *args, **kwargs)[source]¶
Общие настройки
Находит папку _rels и парсит файл .rels в нем
- APP_TYPE = None¶
- NS = 'http://schemas.openxmlformats.org/package/2006/relationships'¶
- class simple_report.core.xml_wrap.OpenXMLFile(rel_id, folder, file_name, file_path)[source]¶
Файл XML в структуре OpenXML
- NS = None¶
- 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]¶
Вычисление следующего курсора
- class simple_report.xlsx.cursor.Cursor(column=None, row=None)[source]¶
Специализированный курсор для XLSX таблиц.
- class simple_report.xlsx.document.DocumentXLSX(*args, **kwargs)[source]¶
Обертка для работы с форматом XLSX
- 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>¶
- 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]¶
Секция отчета
- 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"]'¶
- 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) – адрес ячейки
- 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_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'¶
- 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'¶
- section_pattern = <_sre.SRE_Pattern object at 0x1756670>¶
XML-файл с общими строками, на каждую из которых могут ссылаться из других xml-файлов XLSX
Сборка файла
- 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'¶
- 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'¶
- class simple_report.xlsx.spreadsheet_ml.WorkbookStyles(rel_id, folder, file_name, file_path)[source]¶
Unused
- class simple_report.xls.cursor.CalculateNextCursorXLS[source]¶
Получение следующего курсора
- class simple_report.xls.cursor.CursorXLS(column=None, row=None)[source]¶
Специализированный курсор для XLS таблиц
- class simple_report.xls.document.DocumentXLS(ffile, tags=None, **kwargs)[source]¶
Обертка для отчетов в формате XLS
- 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
- 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_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: тип ячейки
- 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
Created on 24.11.2011
@author: prefer
- class simple_report.docx.document.DocumentDOCX(*args, **kwargs)[source]¶
Отчет в формате docx
- class simple_report.docx.wordprocessing_ml.ContentTypesXMLFile(tags, *args, **kwargs)[source]¶
Типы объектов
- FILENAME = '[Content_Types].xml'¶
- NS = 'http://schemas.openxmlformats.org/package/2006/content-types'¶
- class simple_report.docx.wordprocessing_ml.DocumentRelsXMLFile(tags, *args, **kwargs)[source]¶
- FILENAME = 'document.xml.rels'¶
- NS = ''¶
- class simple_report.docx.wordprocessing_ml.Section(table)[source]¶
Секция таблицы docx документа. Поддерживает ограниченное число операций В частности, строчки таблицы выводятся полностью, т.е. минимальной единицей секции является строка таблицы
- 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'¶
- get_section(section_name)[source]¶
- Получение секции таблицы в документе DOCX по имени
Parameters: section_name – имя секции Result: секция
- simple_report.rtf.api.convert_dict(dictionary)[source]¶
Конвертирует значения из словаря в пригодные для записи в rtf-файл