Как сделать несколько листов в Excel

hprt

Мне нужно сделать несколько листов в екселе (через html + xml. Просто xml не рулит, т.к. нельзя библиотеку полностью переписать). У меня получается сделать несколько пустых листов, могу сделать заполненный лист. Но при попытке вставить информацию в несколько происходит минимум падение екселя (один раз комп перезагрузился ). Можно сделать в несколько файлов, но неохота.

gopnik1994

я, наверное, слишком глуп, чтобы понять
поясни...

ava3443

Не понял, где у тебя там HTML и как он связан с Excel/XML ?
Если просто сгенерить Excel workbook в виде XML - то я это делал (в частности, с несколькими листами). Опиши подробнее, в чём проблема - постараюсь помочь.

hprt

Excel понимает htm и xml. Отчет формируется в виде html-таблицы. Там, конечно, все равно, xml идет, но само тело отчета нужно оставить табличкой. Там куча тегов <ExcelWorkbook>, <ExcelWorksheets>, <ExcelWorksheet> и т.д.. Если написать
    <ExcelWorksheets>
<ExcelWorksheet>
...
</ExcelWorksheet>
<ExcelWorksheet>
....
без данных - формируется нормальный файл с двумя страницами.
Если написать
    <ExcelWorksheets>
<ExcelWorksheet>
...Табличка
</ExcelWorksheet>
</ExcelWorksheets>
....
Формируется файл с отчетом. Если подобным образом сделать для двух - все падает.
Можно вставить ссылку на файл (<EcxelWorksheetSource>, что ли... но делать этого неохота. Мб нужно оформить табличку в эти теги, но я не умею.

ava3443

Мда... извини, про такие теги как ExcelWorkbook и ExcelWorksheets ничего не слышал.
У меня был просто XML со структурой типа
<Workbook>
...
<Worksheet>
...
</Worksheet>
<Worksheet>
...
</Worksheet>
</Workbook>
Кстати, у каждого Worksheet-а аттрибут "Name" обязательно нужен был, причём уникальный...

hprt

Нельзя создавать доп.файлы(

hprt

Это понятно, писать просто лень - не копипастил

ava3443

У тебя отчёт каким-то скриптом формируется? Тогда в чём проблема заставить скрипт выдавать нормальный XML с Workbook-ом? Ну и про "Content-Type: application/vnd.ms-excel" не забыть.

ava3443

> Нельзя создавать доп.файлы(
Я никаких доп. файлов не предлагал. Просто скрипт выдаёт пользователю XML. А если он ещё выдаёт правильный HTTP-заголовок Content-type, то пользователь просто увидит перед собой экселевскую книгу (внутри IE).

ava3443

P.S. Вообще, правильный путь по-моему - это наваять табличку-пример в Excel-е, сохранить её в XML и разобраться с тем, какой получается XML.

hprt

Сразу на все:
1. Нужен html, чтобы его можно было смотреть в браузере без всяких проблем. У меня и так по сути xml идет.
2. Насчет доп.файлов - есть вариант, как сделать с ними (WorksheetSource но их нельзя использовать. Есть только один файл htm, в который можно писать. Даже имя поменять нельзя
3. Я прекрасно понимаю, что так надо делать. Если сохранить в htm - будет несколько файлов. Если в mht - тут вообще непонятно. Файл.mht открывается нормально, тот же файл без изменений.htm - кривой до ужаса. Название, как уже говорил, сменить не могу.

ava3443

Если я правильно понял, нужно, чтобы при открытии файла с заданным именем и с расширением .htm пользователь видел бы таблицу Excel. Так?
Раз ты используешь эти XML/Excel-навороты внутри HTML, кроме Internet Explorer никто точно не сможет просмотреть эти таблицы, это гарантированно.
Я бы сделал так: 1) написал бы скрипт, выдающий чистый XML (никакого HTML! понимаемый Excel-ем как excel workbook. 2) назвал бы этот скрипт типа "file.htm" 3) дал бы ему права исполнения на сервере 4) настроил бы Апач (или попросил бы об этом админа сервере) так, чтобы "file.htm" выполнялся бы как CGI-скрипт (обычно на хостингах настроено так, что исполняются всякие *.pl и *.cgi, но никак не *.htm)
Всё. Получаем, что при открытии ссылки http://www.mydomain.ru/file.htm пользователю вываливается Excel/XML, который у него нормально отображается Excel-ем. И никакого HTML.

hprt

К сожалению, рамки довольно жесткие. Никаких файлов и настроек на сервере я создавать не могу. У меня есть один открытый файл. Он гарантированно открывается explorer'ом, хотя это не важно - я из оперы его тоже смотрел. Чистый xml не вариант, т.к. на этой библиотеке много всего написано, поэтому если перейти, то либо форматирование потеряется, либо файлы вообще открываться не будут (теги форматирования разные). Необходимо, чтобы уже готовые отчеты работали без изменений. Все равно спасибо за участие).

hprt

Еще вопрос: можно ли в xml задать стиль для отдельной ячейки (без определенного выше стиля) и как это сделать? Нужно выравнивание, граница, жирность и формат числа. Думаю, может старые отчеты распарсить...

ava3443

Внутри <Workbook> есть <Styles>, в котором много <Style>. Добавляешь туда ещё один <Style> для нужной тебе ячейки и всё...
Или ты хочешь засунуть информацию о стиле в аттрибут элемента <Cell> (типа как в HTML стили CSS внедрять можно аттрибутом style) ? Можно ли такое с Excel/XML - не знаю...

hprt

Да, именно второй вариант. Чтобы исправлять старое было проще. Вчера смотрел - не получилось.
Оставить комментарий
Имя или ник:
Комментарий: