Переносим таблицу из Excel в Sheet: Статьи о Psion

Переносим таблицу из Excel в Sheet

Автор: Sonic.

Однажды мне предложили дополнительную работу. Выполнять ее предполагалось в свободное от основной работы время, и часть ее я по обыкновению делал по дороге домой на своем любимце - Diamond Mako. И частью этой работы являлся один Excel-евский файл, из-за которого и появилась эта статья, которая, надеюсь, будет для кого-то полезна, а для кого-то просто познавательна. Ну, а я потренируюсь тексты набивать на клавиатурке моего дружка ;-)

Итак, начнем. До того момента я PsiWin'овскими конверторами не пользовался. Ставлю зверька напротив ИК-передатчика JetEye, перетаскиваю иконку правой кнопкой, жму Copy and convert... Поехали!

Что-то долго едем... Все нормально, ничего не зависло, конвертируется, но, боже мой, как медленно!!! Вся процедура продолжалась минут, наверное, пятнадцать… Все, авторитет PsiWin'а в моих глазах безнадежно уронен. Смотрю на результат, и ужасаюсь...

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

Ну и, наконец, размер файла - больше мегабайта!!! И это получилось каким-то образом из 200-килобайного файла MS Excel'97!

Естественно, такое положение дел меня не устроило. И я принялся искать решение проблемы. Для начала я решил разобраться, откуда берется такой объем.

EPOC Sheet, к сожалению, действительно не поддерживает несколько листов. Поэтому для экспериментов вырезал из таблицы один лист и записал его в файл. Размер файла получился 184 Кб. Переконвертировал его снова в Sheet, и получилось 750 Кб. Загрузил его в FileDump и начал смотреть, что же там такого лишнего. Данные я отыскал быстро. Перед текстом каждой клетки зачем-то стояло название шрифта, которым эта клетка написана - Arial Cyr, либо просто Arial, и еще какие-то байты. Оказывается, в файле Sheet формат хранится для каждой клетки отдельно, включая даже пустые, даже если он одинаковый для всей таблицы!
Переносим таблицу из Excel в Sheet: картинка #1 (5112 байт)

Казалось бы - все просто. Выделяем всю таблицу, и даем команду "Clear format". Да, работает ужасно долго. Сохраняем файл, смотрим. Ха! 650 Кб! Снова запускаю FileDump, и вижу, что данные о формате снова остались.
Я предположил, что Sheet всегда сохраняет эти данные. Для проверки этой гипотезы я создал в Sheet файл со всего двумя строчками:
Переносим таблицу из Excel в Sheet: картинка #2 (3895 байт)

Посмотрев его FileDump'ом, я обнаружил, что на этот раз данных о формате нет. Что-то в нем отличалось от моего. Через некоторое время я выяснил, что именно. Моя таблица была написана шрифтом "Arial", а созданная в Sheet - загадочным шрифтом "Univers", которого в списке шрифтов нет.

При попытке выполнить команду Clear format именно эти шрифты применялись к клетке.

Переносим таблицу из Excel в Sheet: картинка #3 (4134 байт)

Стало быть, в Sheet есть понятие "Формата по умолчанию", и клетка может иметь либо его, либо свой собственный, указанный для каждой клетки отдельно. И, возможно это ошибка в Sheet, но если шрифт по умолчанию - не Univers, то он не будет считаться таковым, и будет приписан к каждой клетке.

Эта гипотеза подтвердилась. Когда я еще раз залез в тестовый файл FileDump'ом, я увидел это имя. В конце же моего первого файла там стояло "Arial".

Надо было найти альтернативный способ переносить файлы. Таким способом стала программа nConvert. Спасибо обитателям конференции, мне помогли ее "растаможить", и я тут же ее проверил.

Увы и ах, прямая конверсия Excel-Sheet, дала тот же результат. Около 650 Кб :-( История ровно та же - шрифт по умолчанию Arial, при попытке убрать форматирование размер не сокращался.

Нужно было надежное средство убрать форматирование. Поэтому я решил попробовать перекачать данные, используя формат CSV.

Сразу же я столкнулся с первой проблемой. Почему-то Excel'97 при экспорте в этот формат разделяет значения не запятыми, а точками с запятой, в результате nConvert слил все строки в одну клетку... Мне думается, что это проблема именно с Excel, поскольку CSV расшифровывается именно как Comma Separated Values. Поэтому полученный CSV-файл необходимо обработать в текстовом редакторе. Я это сделал при помощи программы Notepad ("Блокнот"), задав команду поиска и замены всех точек с запятыми на запятые. После этого файл готов к переносу на Psion. Далее запускаем nConvert, и...
Ура! 80 Кб. Вот это уже похоже на правду! Открываем, смотрим. Хм, шрифт по умолчанию все равно Arial, но Univers теперь присутствует в списке. Видимо, все дело действительно в нем, и в любом документе он обязан присутствовать.
Переносим таблицу из Excel в Sheet: картинка #4 (5570 байт)

Итак, что мы в результате узнали? К сожалению, стоит признать, что программа Sheet сделана неудачно :-(. На данный момент есть два способа переноса файлов из MS Excel, и ни один из них нельзя считать оптимальным. Вы можете выбирать между размером файла и сохранением вида документа. Какой из способов выбрать - зависит от того, какую задачу необходимо решить. Для обхода этого ограничения нужен специальный конвертор, которого, увы, пока еще нет.

Все это исследование я провел на своем Diamond Mako за несколько поездок на работу.

Дата статьи: 6 января 2002 г

« Назад в каталог | Обсудить в конференции »
[На главную] [Обновления] [Новости] [Клуб] [Обзоры программ] [Советы] [Обзоры железа] [SIBO] [Конференция] [Статьи] [Базы] [Ссылки] [Поиск]
Основные способы устройства стяжки.