Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: PHP использование COM

Сообщения:  [1-10]   [11-11] 

 
 автор: confirm   (06.02.2013 в 19:13)   письмо автору
 
   для: sidPR   (06.02.2013 в 17:52)
 

Это называется методом тыка.
Вы не поняли. Объект имеет не одно свойство, а несколько, в данном примере производится обход циклом по свойствам объекта, с установкой им параметров. Например, в JS вы можете обойти свойства объекта оператором with, в VBS это будет For Each, в РНР foreach (смотрите в руководстве РНР о СОМ объектах, там есть описания примеров). Можно и без цикла, перечисляя последовательно строками.
Говоря о цикле, я имел ввиду, что установка неких свойств объекта может требовать установки и других свойств, например, не только среди свойств некоего объекта, но возможно и среди коллекции этих объектов (например, коллекции Sheets).
Другими словами, возможно требуется указать какие ячейки будут блокированы - все или часть, и как это делается. То есть, вы не просто выдирайте куски примеров из описания, а изучайте все что касается COM-объекта, в данном случае Excel.
Я не работал с этим объектом достаточно много, по мелочам, как то вставка листов в книгу, получение определенных колонок и конвертирование их в другой формат на выходе. Я достаточно много работал с Word объектом, начиная от простейшего преобразования документов, кончая использованием его для проверки правописания, и я изучал этот СОМ-объект насколько требовалось для решения задач. Но это все под VBS, JS, WSH, а работать с excael документами на сервере, так это есть библиотеки, большой надобности в СОМ объекте нет, если только у вас не win-сервер.

  Ответить  
 
 автор: sidPR   (06.02.2013 в 17:52)   письмо автору
 
   для: confirm   (06.02.2013 в 16:32)
 

For Each oSheet In oReport.Workbooks(1).Sheets
                oSheet.Protect Password:="", DrawingObjects:=True, Contents:=True, Scenarios:=True
                oSheet.EnableSelection = xlNoSelection
Next 


Судя по этому рабочему варианту я должен сделать нечто вроде, цикла по

foreach ($this->_xlsObj->ActiveSheet as $sheet){
            $sheet->EnableSelection = 'xlNoSelection';
        }

  Ответить  
 
 автор: confirm   (06.02.2013 в 16:32)   письмо автору
 
   для: sidPR   (06.02.2013 в 15:22)
 

Я не знаю как конкретно, так как не занимался подобным, но определенно вы делаете это не так как нужно. Поэтому и надо прочесть все, что касается этого вопроса. А уж примеры на чем, то ли на VB, то ли на .NET вы будете изучать, роли не играет.

  Ответить  
 
 автор: sidPR   (06.02.2013 в 15:22)   письмо автору
 
   для: confirm   (06.02.2013 в 13:43)
 

Мне нужно просто закрыть лист от копирования.

пароль на лист я поставил вот так:

 $this->_xlsObj->ActiveSheet->Protect('22');
\
и это работает.

а как поставить EnableSelection ?

я пишу перед своей строкой так:


$this->_xlsObj->ActiveSheet->EnableSelection = 'xlNoSelection';
$this->_xlsObj->ActiveSheet->Protect('22');
$this->_xlsObj->Workbooks[1]->Protect('11');


но не пашет.. :(

  Ответить  
 
 автор: confirm   (06.02.2013 в 13:43)   письмо автору
 
   для: sidPR   (06.02.2013 в 12:40)
 

Что значит перевести в РНР? РНР вообще не может работать с тем, что ему не доступно (как и любой другой язык), поэтому вы и открываете СОМ-объект через который вы будете иметь доступ к требуемому, и работать будет он, а не РНР. Разница только в обращении к объекту, а опции значений задаются также (правда в JS в отличии от VB, если в нем открыть такой объект, иначе немного, но к РНР это отношения не имеет).
Читайте, скорее всего вы неверно указываете опции объекту (ячейке), ведь на странице она не одна. К примеру, VB:
objSheet = xlsObj.Sheets(2)
objSheet.Рrotect("param",.T.,.T.,.T.) //запрет на ячейки
xlsObj.ActiveSheet.EnableSelection = xlUnlockedCells //так недоступны защищенные ячейки
xlsObj.ActiveSheet.EnableSelection = xlNoRestrictions //а так доступны все ячейки при перемещении по листу, но ввести данные он может только в незащищенные ячейки.

Пример который привели вы подразумевает обход в цикле, чего нет у вас в коде, так что читайте.

  Ответить  
 
 автор: sidPR   (06.02.2013 в 12:40)   письмо автору
 
   для: confirm   (06.02.2013 в 12:35)
 

Там то я и нашел пример на VBA и он рабочий. но как его в php перевести я хз :)

  Ответить  
 
 автор: confirm   (06.02.2013 в 12:35)   письмо автору
 
   для: sidPR   (06.02.2013 в 12:22)
 

Ищите на MSDN.

  Ответить  
 
 автор: sidPR   (06.02.2013 в 12:22)   письмо автору
 
   для: Sfinks   (06.02.2013 в 12:05)
 

ну наверняка этот PHPExcel использует Com.. мне просто нужно понять как эту долбаную строку написать и все :(, чтобы нельзя было выделить документ и скопировать..

  Ответить  
 
 автор: Sfinks   (06.02.2013 в 12:05)   письмо автору
 
   для: sidPR   (06.02.2013 в 11:44)
 

Не проще использовать класс PHPExcel?
Я в нем не нашел только как зафиксировать шапку таблицы, чтоб она не уезжала при скроллинге. Все остальное, что когда либо было нужно, есть.

  Ответить  
 
 автор: sidPR   (06.02.2013 в 11:44)   письмо автору
 
   для: SIDPR   (05.02.2013 в 17:21)
 

Помогите пожалуйста, надежда только на вас :)

  Ответить  

Сообщения:  [1-10]   [11-11] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования