Страницы: 1
RSS
Анализ структуры таблицы Excel
 
Добрый день. Как узнать формат данных имеющейся таблицы Excel? Имеется таблица и хотел бы провести "обратный инжиниринг"  - хочется понять структуру получившейся таблицы. С разделителями/или фиксированной ширины, с какой строки начат импорт, учитывались ли заголовки при импорте данных, каким знаком является символ-разделитель (знак табуляции/точка с запятой/запятая/пробел/другой) , ограничитель строк, форматы данных столбцов. Мне показалось, что ответ находится в разделе "Данные" в ленте Эксель, но не уверен. Тем  более, не знаю что делать дальше в этом разделе.   В разделе Данные есть "Расширенный редактор". Может это то, что нужно?
Изменено: Владимiръ - 19.01.2020 09:01:37
 
в книге в общем случае может быть много листов
точно, на каждом листе есть много строк. много колонок и очень много ячеек, у каждой из них может быть свой формат
в каком виде и с каким содержанием отчет о форматах вы хотели бы увидеть?
и интересно как это поможет
Цитата
Владимiръ написал:
понять структуру получившейся таблицы
??? хотя на этот вопрос можно не отвечать, очевидно если прочитать и осмыслить отчет о форматах миллиардов ячеек совершенно отчетливо можно себе представить структуру таблицы
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Лист всего навсего один. Строк там совсем немного. Хочется проанализировать не данные в таблице а ее структуру. Например, что было использовано в качестве разделителей при импорте. Исходник - файл гугл календаря.

Скажите, есть ли в этих данных что то годное для анализа

Источник = Excel.Workbook(File.Contents("H:\ONEDRIVE\ЭКСПЕРИМЕНТ С КАЛЕНДАРЯМИ\ФОРМАТ И НЕФОРМАТ ИМПОРТ В ЭКСЕЛЬ\ИМПОРТ ИЗ ОНЛАЙН СЕРВИСА.xlsx"), null, true),
   #"tmp-15783200535506222_Sheet" = Источник{[Item="tmp-15783200535506222",Kind="Sheet"]}[Data],
   #"Вычисленное количество значений" = List.NonNullCount(#"tmp-15783200535506222_Sheet"[Column1]),
   #"Извлеченный текст перед разделителем" = Table.TransformColumns(#"Вычисленное количество значений", {{"Column1", each Text.BeforeDelimiter(_, ","), type text}}),
   #"Диапазон извлеченного текста" = Table.TransformColumns(#"Извлеченный текст перед разделителем", {{"Column1", each Text.Middle(_, 1, 20), type text}}),
   #"Извлеченные первые символы" = Table.TransformColumns(#"Диапазон извлеченного текста", {{"Column1", each Text.Start(_, 12), type text}}),
   #"Вычисленная длина текста" = Table.TransformColumns(#"Извлеченные первые символы",{{"Column1", Text.Length, Int64.Type}}),
   #"Измененный тип" = Table.TransformColumnTypes(#"Вычисленная длина текста",{{"SUMMARY", type text}, {"DTSTART", type datetime}, {"DTEND", type datetime}, {"DUE", type any}, {"NOTES", type text}, {"ATTENDEE", type any}, {"LOCATION", type any}, {"PRIORITY", type any}, {"URL", type any}, {"CALENDAR", type any}, {"UID", type any}}),
   #"Обработанное значение JSON" = Table.TransformColumns(#"Измененный тип",{{"SUMMARY", Json.Document}}),
   #"Обработанные данные XML" = Table.TransformColumns(#"Обработанное значение JSON",{{"SUMMARY", Xml.Tables}})
in
   #"Обработанные данные XML"
Изменено: Владимiръ - 19.01.2020 09:58:02
 
Доброе время суток
Владимiръ, вы любитель гадания на кофейной гуще? Одно из следствий теории алгоритмов гласит: не существует такого алгоритма, который по коду другого алгоритма, определит, что и с чем он делает :)  Не уж то так сложно прочитать правила?
Изменено: Андрей VG - 19.01.2020 10:09:38
Страницы: 1
Наверх