В просторах интернета попалась информация, что, если создать простую
таблицу в формате HTML, а затем переименовать расширение файла на .xls
,
то Microsoft Excel нормально примет такой файл.
Выдалось несколько свободных минут. На компьютере с XP нашелся Microsoft Office Excel 2007 и любимый FAR. Так что всё будет быстро проверено. Интересует, в первую очередь, совместимость.
Создаём файл 1.html
.
FAR: Shift-F4 - 1.html - Enter
.
Файл готов. Сохраняем F2. Выходим Esc. Копируем в такой-же, но с расширением
.xls
: F5 - *.xls - Enter
. Запускаем фай. Упс! Первый глюк:
Выбираем "Да".
Первое "Ура!".
Давайте сложим значения первых двух ячеек и результат умножим на значение
третьей. Всё будем делать как в Excel'е: =(A1+B1)*C1
. Добавим ячейку:
Посмотрим результат в Excel:
#
- Настораживает. Берём за границу между столбцами D
и E
, раздвигаем
столбец и ...
... видим результат! Ура! Всё подсчитано.
Но хочется чтобы всё было видно сразу, а не какие-то # # #
Давайте укажем ячейке ширину:
Результат:
Значение в ячейке видно сразу. Ok.
Примечание: если текст определён заранее, то ширина столбца подгоняется под ширину текста, а если значение вычисляемое, то столбец не расширяется :-P
Да. Хочу видеть границы, чтобы таблица была расчерчена линиями при печати.
Пробуем: BORDER=1
.
Результат:
И это работает!
А вот хочу, чтобы все ячейки были одинаковой ширины.
Заодно ещё строчку к таблице добавлю.
...
Ширины НЕТ :(
Ладно, попробуем границы перевести из HTML в CSS ...
...
Опа ... А границы-то появились. Толстенные. Но ячейки не расширились.
Копаем дальше: смотря на то, как этот файл сохранит Excel и, удивляясь его коду, находим, что есть пролема с селекторами, и, лучше работать через классы:
Получим вид:
При этом:
pt
(px
- дают слишком толстую);TD{}
, ибо с ними глюки;<TD class="TD">
, а в таблице стилей - .TD{}
;<TD class="TD RED">
и <TD class="TD" class="RED">
. Microsoft их не понял.Как видите - граблей полно.
Добавим строчку с итогом, объединим ячейки
...
Получилось. Теперь хотим выровнять ячейку "ИТОГО" по правому краю.
Добавили класс .TDR
. Вроде всё просто и должно заработать.
Гы-гы... Вместо "Итого" - загогулины получаются. С чего бы это?
Ради прикола уберём переднюю часть из .TDR
:
И ... :-D
Выровнялось по правому краю и написано стало по-русски. В чём подвох? Воистину, Microsoft непредсказуем :)
Запускаем файл и ... фигушки. Цифры, буквы есть, а вот всё оформление исчезло. Ни ширины колонок, ни рамочек.
Грабли в том, что CSS не переварился никак :-(
Приходится полностью вернуться на HTML. При этом выявляется очередное
ограничение: цвет #FC9
не проходит, только в формате #FFCC99
.
И ещё прикол: #FFE8CC
- то же не прошёл - остался белым.
Похоже, что обрабатываются только цвета заранее подобранные Майкрософтом.
Сразу ещё предупрежу: никакого JavaScript'а генерирующего таблицу на лету!
Перетягиваю документ в Word - вставляется.
LINUX - Ubuntu - Open Office 2.4.
.xls
- принял с двумя проблемами: WIDTH
не проходит, и, по-умолчанию
кодировка не прошла. Пришлось добавить META
.
Как .xls
, так же обработался и файл с расширением .ods
- родной формат для
электронных таблиц Open Office.
Ячейки не растянулись под размер вписанного текста. Для этого приходится сделать двойной клик по правой границе названия столбца.
Для растяжки ячеек под текст пришлось их объединить.
Вот и окончательный код:
Проверяем результат в Excel 97:
Всё в норме.
Да может когда-нибудь на каком-либо языке надо будет сгенерить на лету Excel'овскую таблицу.
А почему бы не взять готовый модуль?
Можно. Но так прикольнее.
Таблица от A1 до Z9, в каждой ячейке которой написано имя ячейки (в A1 написано "A1", в B1 - "B1" и т.д.).
Запускаем, и в каталоге появился файл test.xls
необходимого содержания: