Як я можу втримати Numbers від керування номерами під час імпорту CSV?


12

Коли я відкриваю файл CSV в Numbers, він "корисно" перетворює поля, які він розпізнає, як числові, знімаючи провідні нулі, перетворюючи речі, які він розпізнає як дати тощо.

Візьмемо для прикладу введення коду UPC у таблицю Numbers 005566778899 , Numbers автоматично перетворить його в 5566778899 . Це не те, що я хотів би ...

Однак, як я використовувати номери, я відкривати бази даних з тисячами кодів UPC з попередніми нулями. Деякі з них також містять дати, які Номери також переформатують. В основному я не хочу жодної з цих функцій, я хочу, щоб мій вміст залишався в спокої.

Як я можу змусити Numbers залишити мої дані недоторканими, коли я відкриваю файл CSV?

Перетворення полів у текст після імпорту не допоможе, оскільки дані вже були заблоковані з ...


Що ви маєте на увазі "дані вже заблукали"? Ви маєте на увазі перетворення в текст після відкриття файлу?
Даниїл

Після відкриття файлу і Excel, і Numbers зміняться навколо всіх ваших даних. Отже, що б там не було, я повинен це зробити, перш ніж відкрити файл.
henryaaron

Через 7 років це все ще здається роззявленою діркою. Проблематично, що зворотний шлях від csv -> Numbers -> csv модифікує клітинки. Провідні нулі - хороший приклад. Ще один - відсотки (наприклад, 20% стає 0,2). Інший - наукові позначення (наприклад, 1E-2 стає 0,01). Згортання подвійних лапок не допомагає, а приставка з апострофом тлумачиться буквально. Я думаю, що найкращим варіантом може бути приєднання всього до апострофа перед імпортом і зняття всіх початкових апостроф після експорту ...
Heath Raftery

Відповіді:


7

Якщо поле у ​​файлі CSV починається з апострофа ( '), і Excel, і Numbers розглядають поле як текст, а не надають його в будь-якому цифровому форматуванні.

Ваші файли CSV, схоже, намагаються примусити передати текст за допомогою додавання полів цифр у подвійні лапки, але Numbers та Excel, схоже, не беруть до уваги, що подвійні цитати повинні розглядатися як рядки. Схоже, хитрість полягає в тому, щоб змінити файли CSV, щоб вони використовували трюк "починається з єдиного апострофа", а не трюк "міститься у подвійних лапки" для числових полів, але зберігати подвійні лапки для текстових полів, що містять пунктуацію (включаючи коми, лапки, розриви рядків тощо).

Щоб обробити файли CSV, щоб вони це зробили, ви можете створити додаток Automator.

У Automator створіть нову програму.

Це буде мати одну дію: Запустити скрипт оболонки (передаючи введення як аргументи). Ось сценарій:

for f in "$@"
do
    perl -pi -e "s/\"\"([0-9A-Za-z: \.\-+]+)\"/'\1/g" "$f"
done

Збережіть отриману програму на робочому столі. Відкиньте будь-які файли CSV, які ви хочете використовувати, у «Числах» на піктограмі програми, і вони будуть перетворені, щоб Числа повинні зберігати числа у полях як буквальні числа, а не форматувати їх або викидати інформацію.

Створіть резервну копію даних, перш ніж спробувати; можливо, що особливо дивно сконструйований рядок у полі запису може скинути результати тут.

введіть тут опис зображення


Зробити цю роботу схоже, що вона потребує деякої взаємодії. Ця дискусія краще відбуватиметься в чаті
Даниїл

0

Зокрема, ось як поводитися з провідними нулями . Я думаю, що ваше питання стосується скоріше форматування комірок, ніж автокорекції.

Як було сказано, функція автокорекції сама є системним елементом, і її потрібно вимкнути із системних налаштувань.


Перетворення комірок у цей формат не допоможе, оскільки дані вже були
змішені

1
Я б очікував, що нулі повернуться, якщо ви відформатуєте комірки - якщо Numbers деструктивно видалить ці нулі при імпорті, які справді будуть смоктати. Можливо, вам доведеться відформатувати комірки перед імпортом.
Адам Ебербах

Це, безумовно, так і є.
henryaaron

0

Huzzah, завдяки цій відповіді та іншим, тепер існує метод із наступними перевагами:

  • Працює в Excel, а також Numbers
  • Можна автоматизувати.
  • Невидимий у числах.
  • Створює файли CSV з нульовим впливом від імпорту до експорту.

Хитрість полягає в тому, щоб не префіксувати кожне поле апострофом і не загортати в подвійні лапки, а префіксувати з ="і суфіксом ". При імпорті Numbers розглядає вміст поля як рядок, а при експорті він скидає префікс і суфікс.

Ось зручний один вкладиш, який попередньо обробляє файл під назвою my.csv:

sed 's/^/="/;s/,/",="/g;s/$/"/' my.csv | sed 's/=""//g' > tmp.csv

Перший sedставиться ="на початку кожного рядка, змінює кожну кому ",=", а потім закінчує кожен рядок ". Друга sedпотім викреслює порожні поля, тому що Числа задавлюються ними. Нарешті, він пише файл під назвою, tmp.csvякий може бути подвійним клацанням або переданим openдля імпорту в номери.

На практиці це дозволить отримати будь-які поля, у яких є коми. Можливо, вам буде краще загортати лише ті поля, які починаються з цифр, але тоді вам слід бути обережними з початком і кінцем кожного рядка та вашої версії регулярних виразів. Це буде зроблено на macOS:

sed -E 's/(^|,)([[:digit:]][^,]*)($|,)/\1="\2"\3/g'

Тобто, порівнюйте початок рядка чи коми, цифру, а потім будь-яку кількість символів, які не є комами, а потім кінець рядка чи інша кома. Замініть тим самим початком і кінцем, але середнім шматочком, загорнутим у ="і ".

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.