|
| 1 | + |
| 2 | +[README in English](README.md) |
| 3 | +# Power-Query-Excel-Formats |
| 4 | +Коллекция кода на языке M для извлечения разных форматов из листов Excel в Power Query / Power BI |
| 5 | + |
| 6 | + |
| 7 | +## Проблема |
| 8 | +Информация на листах в книгах Excel часто имеет дополнительные метаданные, важные при анализе. Эти метаданные могут храниться в различных формах, в большинстве случаев - в виде форматов ячеек, числовых форматов, цвета и так далее. Часто формат строки, столбца или ячейки является критичным элементом набора данных. |
| 9 | + |
| 10 | +В настоящий момент (август 2017) Microsoft Power Query и соответствующий редактор запросов в Microsoft Power BI не позволяет пользователям стандартными средствами извлекать из книг и листов Excel информацию о примененном форматировании листов и ячеек, за исключением некоторых типов данных (например, Дата). |
| 11 | + |
| 12 | +Большое разнообразие форматов и сложность их извлечения сторонними программами (а не нативными средствами Excel), такими как Power BI или Power Query, приводит к потере значительной части информации при импорте. Дополнительной проблемой является сопоставление извлеченных форматов с табличными данными Power Query для дальнейшего использования. |
| 13 | + |
| 14 | +--- |
| 15 | +## Задачи и методы |
| 16 | +### Задачи |
| 17 | + |
| 18 | +Создаем набор отдельных функций, позволяющих извлечь заданную информацию о формате листа и/или ячейки. |
| 19 | + |
| 20 | +В перспективе - создаем универсальные функции: |
| 21 | +- для информации о листе (инфо о строках, столбцах, листе в целом) |
| 22 | +- для информации о ячейках (форматирование цветом, шрифт, выравнивание, числовые форматы, отступы и т.п.) |
| 23 | + |
| 24 | +Универсальность обусловлена одинаковыми применяемыми методами (распаковка и разбор XML), различный вывод в перспективе может задаваться параметрами функций. |
| 25 | + |
| 26 | +### Методы |
| 27 | +#### Распаковка |
| 28 | + |
| 29 | +Основной метод - распаковка файла XLSX/XLSM как архива и работа с XML документами внутри. |
| 30 | +Распаковка осуществляется функцией [UnZip.pq](UnZip.pq), автор Mike White. В принципе, можно использовать любой аналог для работы с zip-архивами в Power Query. |
| 31 | + |
| 32 | +#### Разбор XML |
| 33 | + |
| 34 | +После распаковки на вход в основную функцию поступает набор XML файлов (binary). |
| 35 | +Возможные способы разбора - при помощи встроенных функций Xml.Tables или Xml.Document, либо при помощи других способов парсинга XML. |
| 36 | + |
| 37 | +* **Основная проблема**: внутри книги данные о форматах хранятся отдельно от ячеек, сами ячейки хранятся внутри строк, адрес ячейки задается в формате A1 (необходим дополнительный парсинг в R1C1 или аналог). |
| 38 | +* **Дополнительная проблема**: связывание информации о форматах с позицией ячейки в выводимой таблице Power Query. |
| 39 | + |
| 40 | +--- |
| 41 | +## План работ |
| 42 | + |
| 43 | +1. Структура листа: |
| 44 | + - [уровни группировки (вложенности) строк](../../tree/master/RowsOutline), |
| 45 | + - уровни группировки (вложенности) столбцов, |
| 46 | + - расширенная информация о строках (видимость, высота, вложенность, состояние группировки и т.д.), |
| 47 | + - расширенная информация о столбцах (видимость, ширина, вложенность, состояние группировки и т.д.). |
| 48 | +2. Отступы и выравнивание ячеек |
| 49 | +3. Числовые форматы ячеек |
| 50 | +4. Цвет фона ячейки |
| 51 | +5. Добавление пустых строк и столбцов сверху-слева от UsedRange/dimension ([о ловушке UsedRange см. этот пост](http://excel-inside.pro/ru/blog/2017/05/23/импорт-данных-в-power-query-и-power-bi-из-excel-ловушка-usedrange/)) |
| 52 | +6. Условное форматирование, дополнительные форматы и дальнейшая разработка |
0 commit comments