for flooders
:: Главная :: Решения :: Статьи :: Сайт М. Дроздова :: Файловый архив :: Книга по VFP 9 :: Русский Help Online :: OFF-LINE Форум
   Лисоводы   всех   стран,  объединяйтесь !!!  

Список Форумов  :: Обсуждаем проекты
  

Эмулятор Excel
piva
Автор

Сообщений: 18600
Откуда: Курган
Дата: 01.12.06 08:15:18
В продолжении темы Экспорта в Excel в XML виделась мне картинка когда синтаксис и форма набора команд будет похожа на Excel, бился вчера долго над проблемой с кружечкой пива, и как всегда налетел на грабли с такой объектностью фокса, но оказавывается все победимо
  
 *  
 * Foxcell - ну типа эмулятор Excel   
 *  
    
  loFoxCell=CreateObject("FoxCell")  
  With loFoxCell  
  	With .WorkBook[1]  
  		With .Sheet[1]  
  			.Cells(1,1).Value="Ура ! Получилось"  
  			.Cells(2,1).Value=12  
  			? .Cells(1,1).Value  
  			? .Cells(2,1).Value  
  		EndWith  
  	EndWith  
  EndWith  
    
 * В последствии будет заменено на Collection  
  Define Class FoxCell as Custom  
  	Dimension WorkBook[1]  
  	Add Object WorkBook[1] as WorkBook  
  EndDefine  
    
 * В последствии будет заменено на Collection  
  Define Class WorkBook as Custom  
  	Dimension Sheet[1]  
  	Add Object Sheet[1] as Sheet 	  
  EndDefine  
    
  Define Class Sheet as Collection  
 	* Блин вот это необходимо для того что бы фокс при обращении не ругался  
 	* .Cells is not an array  
  	Dimension Cells[1,1]  
    
 	* Так как в него непосредственно ничего не пишем то никакого когда нету  
  	Procedure Cells_Assign(lnRow,lnCol)  
  	With this  
 	* Nothing to do  
  	EndWith  
  	  
    
 	* Самая "хитрая" процедура которая обманывает фокс подсовывая ему  
 	* необходимыц нам объект  
  	Procedure Cells_Access(lnRow, lnCol)  
  	With this  
 		* Это болезнь всего Fox Team любовь в "нулевым прогонам"  
 		* в первый раз фокс как бы пробует на зуб, что это за зверь  
 		* тем самым получаем lnRow=.F. и lnCol=.F. в качестве   
 		* "нулевого прогона" потом все встает на свои места  
  		If Empty(lnRow) and Empty(lnCol)  
  			Return .null.  
  		EndIf  
    
 		* ФОрмируем ключ именно символьный который требует Collection  
 		* Тем самым обеспечим себе в будущем сортировку по Колонкам  
 		* внутри строк необходимую для формирования XML файла  
  		Local lcKey  
  		lcKey=Ltrim(Str(lnRow*100000+lnCol,20))  
    
  		If Empty(This.GetKey(lcKey))  
 			* Если такой объект не найден создадим начальный  
 			* тем самым оперируем только теми ячейками которые   
 			* есть а не всей поляной сразу   
  			Local oCell  
  			oCell=CreateObject("Empty")  
  			AddProperty(oCell,"Value",.null.)  
    
  			.Add(oCell,lcKey)  
    
  		EndIf  
 		* возвращаем сформированный объект  
  		Return .Item(lcKey)  
  	EndWith  
  EndDefine


------------------
Часто бывает так, что есть над чем задуматься, а нечем.




Исправлено: piva, 01.12.06 08:16
Ratings: 0 negative/0 positive

Re: Эмулятор Excel
PaulWist

Сообщений: 13644
Дата: 01.12.06 09:11:38
Ну и ...., дальше развивай мысль, пока ты эмулируешь структуру Excel-я (и это хорошо), а дальнейшие шаги?


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive

Re: Эмулятор Excel
piva
Автор

Сообщений: 18600
Откуда: Курган
Дата: 01.12.06 09:21:46
А дальше я пока не думал


------------------
Часто бывает так, что есть над чем задуматься, а нечем.
Ratings: 0 negative/0 positive

Re: Эмулятор Excel
PaulWist

Сообщений: 13644
Дата: 01.12.06 09:31:31
Вот блин халявщик , предлагаешь нам голову ломать , а потом скажешь у меня это все давным даdно сделано под fox2.0


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)




Исправлено: PaulWist, 01.12.06 09:31
Ratings: 0 negative/0 positive

Re: Эмулятор Excel
piva
Автор

Сообщений: 18600
Откуда: Курган
Дата: 01.12.06 09:43:11
Ты не выпендривайся, а попробуй подскажи как теперь прикрутить свойства и стили XML к этой фигне
Блин в MSDN нифига толком не нашел, те же рамочки тока в стили оформляются а напрямую в Cell никак не пишутся


------------------
Часто бывает так, что есть над чем задуматься, а нечем.
Ratings: 0 negative/0 positive

Re: Эмулятор Excel
piva
Автор

Сообщений: 18600
Откуда: Курган
Дата: 01.12.06 10:56:24
Мда - чета я погорячился, овчинка не стоит выделки, причем сам Excel в некоторых случаях "теряет" mergecells, все пораскидлано по Styles и Cell придется бросить эту фигню и не выпендриваться


------------------
Часто бывает так, что есть над чем задуматься, а нечем.
Ratings: 0 negative/0 positive

Re: Эмулятор Excel
PaulWist

Сообщений: 13644
Дата: 01.12.06 11:06:47
Так ты скажи конечную идею, а то предложи то не знаю что.


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive

Re: Эмулятор Excel
piva
Автор

Сообщений: 18600
Откуда: Курган
Дата: 01.12.06 11:10:26
Дык после того как все впихаем в Cells по комнаде типа SaveAs сохраняем все это счастье в XML вот и вся идея


------------------
Часто бывает так, что есть над чем задуматься, а нечем.
Ratings: 0 negative/0 positive

Re: Эмулятор Excel
PaulWist

Сообщений: 13644
Дата: 01.12.06 11:32:42
Ну хорошо, а причем здесь стили, всё равно даже если придумать как это сделать возникает следующий вопрос - эти стили применять к каким ячейкам, всем или некоторым и как отличать одни от других, те принципиально выпихнуть таблицу в ExcelXML думаю можно, но всё равно это будет плоская таблица, либо надо городить генератор отчетов.


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive

Re: Эмулятор Excel
piva
Автор

Сообщений: 18600
Откуда: Курган
Дата: 01.12.06 12:03:18
Паша - сделай в Excel файлик с рамочками, жирным фонтом и так далее, сохрани и посмотри, там и так все ясно


------------------
Часто бывает так, что есть над чем задуматься, а нечем.
Ratings: 0 negative/0 positive



Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 7 Simple777  (Гостей: 6)

© 2000-2021 Fox Club 
Яндекс.Метрика