Как стать автором
Обновить

Комментарии 17

Интересно, Excel когда ни будь научится не превращать по дефолту введенные значения типа "02/04" в дату)

Excel как раз действует максимально логично: не указан тип данных (формат) для ячейки (тип General) - использует type inference, пытаясь угадать по содержимому. Во многих ЯП так же, если не указывать тип переменной при инициализации. Не хотите такого поведения - предварительно указывайте другой формат (например, Text). Хотите text по умолчанию во всех новых таблицах - поменяйте формат в шаблоне.

А если хотим как есть но без угадывания дат? Ну то есть очевидно удобно написать 1234 и получить число это удобно, но написать 9/12 или 9.12 и получить дату.... очень сомнительное угадывание, ведь для даты нужен еще год и год эксель додумывает сам, ладно бы в этом столбце скажем уже были даты.

Ну если хотите странного, то придётся потрудиться :) В лоб на VBA встроенное поведение не переопределить, т.к. в событие SheetChange прилетает уже сконвертированное значение ячейки. Так что тут разве что вешать хук на ввод с клавиатуры, ловить события изменения листа и сравнивать текст ячеек с последним клавиатурным вводом, при обнаружении нежелательных паттернов (типа тех самых дат из двух чисел) менять формат ячейки и заполнять его правильным значением.

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

я когда делал выгрузку данных из Delphi то даже форматирование ячейки не помогало, сейчас правда не знаю как, давно уже было, но проблема очень весомая и раздражающая

Ну не знаю, мне лично не мешает, но я предпочитаю сначала всем столбцам конкретный формат задать, а потом уже данные забивать. Статическая типизация рулит :) При импорте какого-нибудь CSV (а это бывает чаще, чем с нуля руками забивать) так тем более сразу тип данных указываешь.

Думаю, с двухчисловыми датами тут культурные различия, и если у нас редко такой формат используется, обычно везде пишем год, даже если в таблице все даты в одном и том же году, - то нам это скорее помеха, чем помощь; а где-то иначе.

вот с CSV та же проблема, ну если это строка а не дата, ну сохрани ты (Excel) как "3/12" с кавычками и открывай как текст! Нет, сохраняет 3/12 и сам же потом не может открыть то что сохранил - преобразовывает в даты

прям беда, ну юзеры какого то лешего очень любят номера заказов делать через / или там номера тканей, и это я вижу в разных фирмах так а не один выдающийся случай

Нет, сохраняет 3/12 и сам же потом не может открыть то что сохранил - преобразовывает в даты

Так там же в мастере импорта CSV есть кнопочка "Transform Data", по которой открывается целый Power Query Editor, ну а в оном и типы можно подправить, и базовые преобразования сразу сделать. Не OpenRefine, конечно, но почти.

Это очень неудобно, когда нужно по 25 раз в день открывать разные CSV-файлы.
С каждым файлов возиться, настраивать типы столбцов?

Ну CSV настолько "чудесный" формат, который каждая софтина понимает и пишет как хочет, - что хорошо, если так получается, и не приходится его сначала с помощью скриптов и чьей-то матери к экселечитаемому виду приводить :) Впрочем, по сравнению с таблицами в виде псевдографики в вордовском документе (и так бывало) любая CSV уже счастье.

В любом случае, Excel предлагает некий дефолтный алгоритм распознавания типов данных из коробки, предлагает опцию не распознавать типы вообще и оставить всё текстом, и предлагает возможность определить типы полей как угодно по-другому вручную, - какие к нему тут претензии? Вот то, что он Parquet из коробки не поддерживает - вот это претензия, это одна из причин, почему про CSV все ещё не забыли как про страшный сон (а давно пора бы).

Проблема в том, что excel делает разрушающее преобразование. Если он сконвертил поле "2.3" во "2 марта", то выставление вручную формата "текст" или "число", не вернёт это в 2.3

А так, не было бы претензций, если бы проблемные столбцы можно было поправить после импорта, а не во время.

Идея, конечно, интересная, но реализация совершенно неочевидная. В качестве чего в модели данных должно храниться вот это "2.3"? Не могу сходу ни одного инструмента вспомнить для работы с данными, в котором после импорта можно было переиграть преобразование типов. Хотим сохранить первоначальные значения - импортируем всё текстом и преобразовываем потом.

Этого я и хочу от Excel, чтобы при клике мышкой в CSV-файл все импортировались как текст, т.е. без разрушающих преобразований и с возможностью последующей конвертации в тип, который мне нужен. А сейчас импорт нельзя сделать в 1 клик и бегло посмотреть, что получилось. Нужно методично настраивать каждый столбец в визарде импорта.

Можно. В мастере импорта сверху есть выбор - определять типы данных по первым 200 строкам (по умолчанию), по всему файлу или не определять вообще. В последнем случае всё импортируется текстом.

Ну кликов, конечно, не 1, а 2 :) Хотя наверняка можно макрос на пару строк написать, чтобы в 1 клик так делать.

У меня больше боли с интеграцией. Не когда я руками натыкиваю что-то в excel, а когда мой скрипт/программа сохраняет CSV и делает ему ShellExecute, чтобы он открылся в программе по умолчанию.

Ну дёргать ShellExecute - это ж в любом случае лотерея. У пользователя может стоять неизвестно какая версия Excel, неизвестно какая локаль, да и вообще не Excel, а какой-нибудь альтернативный офис. И всё это влияет на результат, который может оказаться совершенно непредсказуемым.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Другие новости