Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

13 Октябрь 2019, 23:33 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Доступно и просто о работе в офисных пакетах
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: « 1 2 3 »   Вниз
  Печать  
Автор Тема: по импорту CSV  (Прочитано 12394 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 764


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #15: 8 Октябрь 2014, 14:31 »

...чтобы документ запрашивал путь при открытии, напомните где это настраивается? Вот я захожу Сервис -> Настройки -> Вкладка События -> Документ создан.... , а дальше я вижу что можно присвоить макрос, но какой?
и прописывать его в .setLinkUrl() для этого листа.
Нужно использовать FilePicker (если полностью, то он называется "Сервис com.sun.star.ui.dialogs.FilePicker")
Нужно написать свой простой макрос, что-то похожее на этот пример использования CreateUnoService
Только вместо print "выбран файл: "+fName будет
Код:
ThisComponent.getSheets().getByIndex(0).setLinkUrl(fName)
Ну, это в случае, если прилинкованный лист в шаблоне поставим самым первым ("нулевым по порядку"). Иначе в getByIndex нужно будет указать другой параметр.
Но если нет, то как я понимаю можно восстановить всё формулами? Или нет?
Ну да... Что-нибудь вроде
Код:
=VALUE(SUBSTITUTE(SUBSTITUTE(Данные.K71&","&Данные.L71;"mm";"");"~";""))
Было бы интересно знать откуда берутся такие кривые файлы CSV? Наверно кто-то создаёт "красивые" таблицы с "шикарным" форматированием, а потом сохраняет в формат CSV и числа вида "50,0mm" воспринимаются как текст с последующей разбивкой по запятой, а в колонке "AREA" наверно была формула, значение которой передаётся в соответствии с настройками языка(с разделителем точкой).
Это, скорее всего, выходной файл какого-то 3D-редактора, приспособленного под конструирование корпусной мебели. Выгрузку в CSV делает какой-то плагин, который действительно пытается использовать для числовых значений системные настройки, а значения с размерных линий берёт как текст ("как пишится - так и слышется"  Смеющийся )
Нужно правильно создавать файл CSV , тогда не будет проблем с импортом
От maxim'а, похоже, тут уже мало что зависит. Дизайнер не пишет значения размеров - он просто растягивает ящик вправо-влево-вверх-вниз-вглубь, а размеры подставляет редактор. Плагин все данные по проекту тупо выгружает в файл. maxim, видимо, должен автоматизировать создание договора на изготовление мебели, требований на материалы и фурнитуру, счёт на оплату, заготвку акта выполненных работ и т.п.
Тут уж или плагин переписывать, или попытаться настроить 3D-редактор...
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
maxim
Участник
**
Offline Offline

Пол: Мужской
Сообщений: 32


« Ответ #16: 8 Октябрь 2014, 14:52 »

Было бы интересно знать откуда берутся такие кривые файлы CSV? Наверно кто-то создаёт "красивые" таблицы с "шикарным" форматированием, а потом сохраняет в формат CSV и числа вида "50,0mm" воспринимаются как текст с последующей разбивкой по запятой, а в колонке "AREA" наверно была формула, значение которой передаётся в соответствии с настройками языка(с разделителем точкой). Нужно правильно создавать файл CSV , тогда не будет проблем с импортом, инче придётся много "работать ручками". maxim, а какие данные нужно импортировать? Может быть можно "выдернуть" только нужный "кусок" данных.

Эти файлы создаёт плагин из одной программы. Плагин просто выводит всю информацию из модели. Этот плагин англичанин написал, и мне трудно на английском с ними переписываться. Он сам тоже на форуме что то писал про замену запятых на точки в числах, но пока не понял ещё.
По поводу данных, мне действительно нужно только некоторые значения: Название, цвет, длина, ширина, глубина.

Видите ли дело в том что все эти плагины (их очень много) создаться сообществом разработчиков и бесплатно выкладываются. Плагины разрешается самому изменять как угодно, но надо знать RUBI.





Это, скорее всего, выходной файл какого-то 3D-редактора, приспособленного под конструирование корпусной мебели. Выгрузку в CSV делает какой-то плагин, который действительно пытается использовать для числовых значений системные настройки, а значения с размерных линий берёт как текст ("как пишится - так и слышется"  Смеющийся )
Цитата: rami от Сегодня в 15:09
Нужно правильно создавать файл CSV , тогда не будет проблем с импортом
От maxim'а, похоже, тут уже мало что зависит. Дизайнер не пишет значения размеров - он просто растягивает ящик вправо-влево-вверх-вниз-вглубь, а размеры подставляет редактор. Плагин все данные по проекту тупо выгружает в файл. maxim, видимо, должен автоматизировать создание договора на изготовление мебели, требований на материалы и фурнитуру, счёт на оплату, заготвку акта выполненных работ и т.п.
Тут уж или плагин переписывать, или попытаться настроить 3D-редактор...
Да вы правы, и кстати я вас хочу поблагодарить, вы мне ещё когда то давно очень помогли. В то время я использовал другой плагин (да и сегодня тоже) и я просто копировал в буфер обмена, а дальше в Calc вашим макросом. Вы его называли Мебель из Буфера обмена. Но тот плагин не учитывал направление текстуры. Со временем узнал побольше о формулах и смог сделать тоже самое без макроса, Но тперь хочу дальше сделать чтобы мне текстуру учитывать.
Записан
maxim
Участник
**
Offline Offline

Пол: Мужской
Сообщений: 32


« Ответ #17: 8 Октябрь 2014, 16:45 »

Установил сейчас Libre Office
Дааааа уж действительно лучше импортирует CSV  и  Вставляет в любой диапазон

Также хотел попробовать ваш макрос, но что то не реагирует никак. ни в ОО ни в LO

Пока LO делает всё как надо! Буду дальше пробовать.
Записан
maxim
Участник
**
Offline Offline

Пол: Мужской
Сообщений: 32


« Ответ #18: 8 Октябрь 2014, 17:04 »

Можно вопрос немного не по теме
В ОО была кнопка "Записать макрос", а в LO я её не вижу. Она есть или спрятана где-то?
Записан
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 2 783


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #19: 8 Октябрь 2014, 17:17 »

Также хотел попробовать ваш макрос, но что то не реагирует никак. ни в ОО ни в LO
Это чей? Если по ссылке что дал JohnSUN, то надо кое-что изменить.
В ОО была кнопка "Записать макрос", а в LO я её не вижу. Она есть или спрятана где-то?
В меню "Сервис" "Макросы" "Записать макрос". Ещё можно поставить кнопку в панели инструментов через меню "Сервис" "Настройка..."
Записан

tagezi
Мастер
*****
Offline Offline

Пол: Мужской
Расположение: Finland
Сообщений: 793



WWW
« Ответ #20: 8 Октябрь 2014, 17:20 »

Можно вопрос немного не по теме
В ОО была кнопка "Записать макрос", а в LO я её не вижу. Она есть или спрятана где-то?
Сервис -> Параметры -> Расширенные возможности
Нужно поставить галочку "Включить запись макросов (ограничено)"
После этого появится "кнопочка" Сервис -> Макросы -> Записать макрос
Записан

(x86_64) Kubuntu 16.04.3 - LibreOffice 6.0.2 / 6.1 alpha
maxim
Участник
**
Offline Offline

Пол: Мужской
Сообщений: 32


« Ответ #21: 8 Октябрь 2014, 17:49 »

Сервис -> Параметры -> Расширенные возможности
Нужно поставить галочку "Включить запись макросов (ограничено)"
После этого появится "кнопочка" Сервис -> Макросы -> Записать макрос
Спасибо большое


Это чей? Если по ссылке что дал JohnSUN, то надо кое-что изменить.

Я хотел ваш попробовать, посмотреть
Записан
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 2 783


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #22: 8 Октябрь 2014, 18:37 »

Я хотел ваш попробовать, посмотреть
Напишите подробней в чём проблема?

Сейчас посмотрел сколько раз загружены файлы: Копия Решение.ods — 9 раз, а ПриходРасход.csv — 5 раз, а должно быть одинаково потому, что данные из файла ПриходРасход.csv копируются в Копия Решение.ods , если нет файла, то и копироваться нечему. Да и путь файла нужно записать в макросе.


* Снимок выделенного.png (85.19 Кб, 650x313 - просмотрено 22 раз.)
Записан

maxim
Участник
**
Offline Offline

Пол: Мужской
Сообщений: 32


« Ответ #23: 8 Октябрь 2014, 18:52 »

а-а тогда извините, это моя невнимательность, я путь не указал в файле
Записан
maxim
Участник
**
Offline Offline

Пол: Мужской
Сообщений: 32


« Ответ #24: 8 Октябрь 2014, 19:39 »

Путь указал, данные загружаются, но не корректно
Но в целом я идею понял. Интересно очень и удобно, не нужно каждый раз путь указывать
Я как то так и представлял импорт из CSV в идеале. Я подобное видел на видео для Excel. Для большинства мне кажется - это отличный вариант. Для меня лично пока не знаю, потому что мне путь всё равно указывать надо. Мой плагин который экспортирует в CSV, делает это всегда по умолчанию в ту папку где мой очередной проект и под тем же именем  В замешательстве
Я на форуме разработчика плагина попросил чтобы он помимо экспорта в файл csv, сделал ещё так что бы в буфер обмена всё копировалось. Вот если ответит и сделает так, то в Libre Office можно даже без макросов.  Libre Office запоминает последние настройки импорта csv, а Open Office только когда импортируешь лист из файла...
Если нет, то по всей видимости мне нужно с макросами разбираться


* 2014-10-08_230341.png (80.46 Кб, 1054x792 - просмотрено 20 раз.)
Записан
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 2 783


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #25: 8 Октябрь 2014, 20:12 »

Путь указал, данные загружаются, но не корректно
Это потому что у нас с вами разные языковые и системные настройки. Измените фильтр в макросе на:
Код:
FilterOptions="44,34,76,1,,1037"
Посмотрим, угадал ли я ваши настройки на этот раз Смеющийся
Записан

maxim
Участник
**
Offline Offline

Пол: Мужской
Сообщений: 32


« Ответ #26: 9 Октябрь 2014, 08:48 »

Посмотрим, угадал ли я ваши настройки на этот раз Смеющийся
Да точно, работает отлично! Класс!
Записан
maxim
Участник
**
Offline Offline

Пол: Мужской
Сообщений: 32


« Ответ #27: 9 Октябрь 2014, 10:00 »

Я проанализировал тему и хочу подвести небольшие итоги:

Импортировать CSV можно разными путями, в зависимости задачи:
1. Если к импортированным данным не будут привязаны формулы, то лучшим способом будет импорт через Вставка → Лист из файла...
Конечно можно легко создать новый документ

2. Если вы хотите импортировать CSV в готовый лист и в определённое место, то здесь помогут макросы.

- Один из макросов от rami, отличный вариант если вам не нужно постоянно задавать путь к исходному файлу (он просто обновляется)

- Ещё один вариант от JohnSUN где можно выбирать путь к новым исходным данным
Я бы все-таки посмотрел в сторону Вставка-Лист из файла... с флажком Связь с файлом. Тогда один раз настроив фильтр и сохранив книгу в шаблоне, можно было бы по событию Документ создан спрашивать путь к новым исходным данным (стандартный диалог открытия файла) и прописывать его в .setLinkUrl() для этого листа.

3. Можно вставить данные из буфера обмена в любом месте документа, сохраняя связь с формулами, но это далеко не всем будет удобно. Если вставлять из буфера обмена, то Libre Office запоминает ваши настройки и вам не придётся каждый раз настраивать параметры импорта (в OO нет).

Для меня лично будет наиболее удобен вариант от JohnSUN или через буфер обмена если конечно у меня вообще появиться возможность копировать в буфер обмена исходные данные

Но я хочу ещё вопрос задать. А формулы действительно никак нельзя связать с новым созданным листом? При этом пусть лист у нас будет создаваться всегда в насале и иметь одно и то же название каждый раз.
Записан
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 2 783


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #28: 9 Октябрь 2014, 10:15 »

На данный момент у вас есть хороший пример импорта, но применить его нельзя из-за кривого файла CSV. Главная проблема — это кривой файл CSV. Автор плагина(англичанин) вряд ли думал о российских настройках, поэтому у вас возник конфликт разделителей — часть данных с точкой, другая часть с запятой. Есть три пути:
1) просить разработчика учесть другие настройки (если сделает, то не скоро)
2) изменить свои настройки разделителей (самое простое, но может возникнуть конфликт со старыми документами)
3) исправлять "кривой" файл макросами и формулами
Но я хочу ещё вопрос задать. А формулы действительно никак нельзя связать с новым созданным листом? При этом пусть лист у нас будет создаваться всегда в насале и иметь одно и то же название каждый раз.
Связать формулы с новым(ещё не существующим) листом нельзя. Но JohnSUN "сделал предложение от которого нельзя отказаться" — импортируем данные и устанавливаем связь, а когда нужно  изменяем адрес связи со старого на новый и просим обновить связь.
Записан

JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 764


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #29: 9 Октябрь 2014, 10:32 »

А формулы действительно никак нельзя связать с новым созданным листом?
Кто-то из нас не понимает. Наверное, я.
В каком смысле "с новым созданным листом"? Речь ведь шла о шаблоне для пачки похожих документов с разными источниками данных?
Я и предложил вставить лист из файла один раз, а потом только менять путь к источнику данных. Хоть макросом, хоть через Правка - Связи. При этом будут меняться только данные этого листа, все формулы на других листах обязаны остаться рабочими. Ну, при условии, конечно, что они изначально были записаны правильно.
То есть лист с данными не "новый", а всегда "старый"

Ну вот! rami стреляет быстрее
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
Страниц: « 1 2 3 »   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!