Форум сайта python.su
Ситуация: необходимо работать с файлами Excel-я из проограммы на питоне,т.е. генерировать таблицы. Причем не только в виде забивки данных (это легко), но и установки “хитрых” атрибутов ячейкам, как границы ячеек (тоже получаются, но не 100%, не в них сейчас проблема).
Проблема в задании фона ячейки, например.
или как выделить символ в строке и работать с его свойствами? Н2О красиво написать надо, может ещё какие формулы объявятся.
Интерфейс такой, что узнать с помощью dir(), чем я могу управлять - невозможно, практически приходится писать вслепую. Чуть чуть помогают макросы экселя, но в них сложно проследить иерархию объектов. Например, pattern по всей видимости определяет как раз свойства ячеек.
Например
xlApp.ActiveSheet.Range(“C8:C19”).Pattern.ColorIndex = 12
xlApp.ActiveSheet.Range(“C8:C19”).Pattern.Solid = True
вызывает
AttributeError: Range.Pattern
есть вариант работы с pyExcelerator. Но совершенно неизвестно, как делать то, что мне нужно, и гугль плохой помошник - документации пока в природе нет, как я вижу.
Офлайн
maxim.tashkinovНу это и не удивительно потому как нет у объекта Range свойства Pattern, зато есть свойство Interior, которое в свою очередь имеет свойство Pattern
Например
xlApp.ActiveSheet.Range(“C8:C19”).Pattern.ColorIndex = 12
xlApp.ActiveSheet.Range(“C8:C19”).Pattern.Solid = True
вызывает
AttributeError: Range.Pattern
Офлайн
http://oreilly.com/catalog/pythonwin32/chapter/ch12.html, глава Early-Bound Automation, сгенери файл для раннего связывания и смотри интерфейс excel по нему. Установи справку по VBA в Excel. Там его объектная модель хорошо расписана.
Офлайн
pyuserСпасибо :) почему-то так сделать мне не пришло в голову (про Interior).
Ну это и не удивительно потому как нет у объекта Range свойства Pattern, зато есть свойство Interior, которое в свою очередь имеет свойство Pattern
ЗЫ. очень полезно иногда смотреть на макросы записанные самой Excel
Отредактировано (Июль 8, 2008 12:47:59)
Офлайн
maxim.tashkinov, тебе надо создавать новый документ? или редактировать существующий, не совсем понятно…
Просто для отчетов я использую такой подход:
1. Создаю шаблон документа так как он должен выглядеть.
2. Сохраняю в html
3. Заполняю html шаблон данными
4. Сохраняю результат как .xls
Офлайн
Думаю MSDN, как справочник по Excel, может помочь ;).
Офлайн
estinНужен новый документ, поскольку шаблон его будет задаваться пользоватлем…
maxim.tashkinov, тебе надо создавать новый документ? или редактировать существующий, не совсем понятно…
Просто для отчетов я использую такой подход:
1. Создаю шаблон документа так как он должен выглядеть.
2. Сохраняю в html
3. Заполняю html шаблон данными
4. Сохраняю результат как .xls
Офлайн
Да.
п2. Когда создал необходимый вид документа в Excel сохраняю его в html
п3. Использую полученный .html как шаблон “шаблонизатора”, т.е. указываю что куда надо вставить
п4. Шаблонизатор + шаблон + данные = заполненый .html код. Записываю полученный результат в файл report.xls (на самом деле “внутри” там html, Excel все прикрасно понимает)
Офлайн
А как задавать константы, которые в макросах экселя имеют вид xlNone, xlDiagonalDown например, и прочее..?
Где они определены? Мне ж их значения надо присваивать чему-нибудь…
Вот например…
xlApp.ActiveSheet.Range(“A2:I2”).Borders(xlDiagonalDown).LineStyle = xlNone
Офлайн
Хотя… Они ж константы :) понял, придётся подбирать.. Врядли они выходят за пределы 5-15-20
Офлайн