LINUX.ORG.RU

Вопрос по конвертированию XLS 2 What??


0

0

Доброе утро, уважаемые!

Помогите пожалуйста решить следующую задачу.

Получаю по почте прайс лист в формате MS Excel. Моя задача посмотреть что там изменилось и сделать изменения на сайте. До сих пор действовал так: Печатал каждый лист из прайс-листа и сидел с ручкой и отмечал, что изменилось по сравнению с версией на сайте и вносил изменения.

Надоело. Хочется небольшой автоматизации. Пробовал некоторое время назад сделать, но не получилось. Надо совет знающих.

Так вот что я хочу. При помощи какой-либо консольной утилиты получить дамп всех листов книг excel (текущий вариант и естественно предыдущий вариант). Затем при помощи инструментов сравнения наити различия и вывести их в текстовый файл в удобночитаемом виде.

Нашел две утилиты: одна xlhtml и xls2csv

Первая устраивает всем, в ней можно гибко задавать что выдирать из исходного файла. НО.... Она на некоторых файлах выдает «ошибка сегментирования», на некоторых просто висит не выдавая результатов, некоторые файлы обрабатывает корректно. В чем причина такого поведения я так и не понял.

Вторая выдает много лишнего и почти не настраивается.

Что бы вы посоветовали для решения такой задачи. Может есть какой велосипед, да я его не знаю?

Спасибо.

P.S. OS - Debian Stable (если это имеет значение)


Написать самому не вариант? Я бы не мудрствуя лукаво, при условии возможности формализации данных в xls документах, написал бы своё.

Anoxemian ★★★★★
()
Ответ на: комментарий от Anoxemian

>Написать самому не вариант? Я бы не мудрствуя лукаво, при условии возможности формализации данных в xls документах, написал бы своё.

Вот к сожалению не могу... увы

raw2
() автор топика

> Вторая выдает много лишнего и почти не настраивается.
В сочетании с sed, grep, awk, diff это не проблема.

Lumi ★★★★★
()
Ответ на: комментарий от Lumi

>В сочетании с sed, grep, awk, diff это не проблема.

Уфф! чего то подобного я ожидал. Предчувствую что это для меня будет не очень легко. Ушел читать маны....

raw2
() автор топика
Ответ на: комментарий от raw2

Блин, не знаю с чего и подступиться...

Ну вот получил я дамп двух таблиц excel. Теперь задача определить различия между ними. Для этого можно воспользоваться diff.

Читаю ман и все больше запутываюсь в параметрах. Не могли бы вы, уважаемые подкинуть простой пример. Допустим есть два простых текстовых файла. Каким образом получить удобноваримый вывод. Нечто вроде:

Newfile
Добавилось по сравнению с файлом Oldfile:
Position 1
Position 2
.....
Position N

Исчезло по сравнению с файлом Oldfile:
Position 1
....
Position N

Изменилось по сравнению с файлом Oldfile:
Line 1
....
Line N

Прошу прощения ежели спросил глупости. До сих пор сталкивался только с простейщим использованием Grep.

raw2
() автор топика
Ответ на: комментарий от raw2

Выложи куда-нибудь результат конверсии своих таблиц. Старой и с изменениями. И что именно надо.

Lumi ★★★★★
()
Ответ на: комментарий от raw2

При конвертировании заодно наверное лучше и отсортировать, это сильно упростит работу.

xls2csv old.xls | sort > old.csv
xls2csv new.xls | sort > new.csv

diff -urN old.csv new.csv | grep \+\"
diff -urN old.csv new.csv | grep \\-\"

Даст нам соответственно добавленные и удалённые строки
Надо будет соответственно откусить у них первый символ и что-то сделать умное с кавычками и др. интересными символами.

Затем grep удалённые строки ищем по очереди в old.csv, а добавленные ищем в new.csv и выхлоп пропускаем через awk, где можно оформить его как надо.

Lumi ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.