Search  
Saturday, February 11, 2012 ..:: Forum ::.. Register  Login
 Forum Minimize
Pentru a putea posta mesaje trebuie să vă înregistraţi.
Notă: Mesajele cu conţinut jignitor sau ilegal (inclusiv cereri de soft piratat) nu sunt acceptate şi vor fi şterse imediat .

Pentru a primi raspunsuri rapide si corecte, scrieti in mesaj ce intentionati sa faceti, ce mesaj de eroare primiti, in ce context si in urma caror actiuni. De asemenea, mentionati versiunea de FoxPro in care lucrati!
Dacă nu specificați versiunea, se consideră VFP 9.0 SP2.

SearchForum Home
  Visual FoxPro  Rapoarte si generatoare de rapoarte  Formatare Excel...
 Formatare Excel
 
 3/14/2009 6:47:17 PM
User is offlineBlinkyBill
34 posts


Formatare Excel
 (N/A)
Am facut un export in excel .
Cu ajutor de la cei mai experimentati a iesit bine .
Pun secvnta de cod poate ajuta pe altii :

COPY TO aaa.xls TYPE xls
exl=CREATEOBJECT("excel.application")
exl.workbooks.open(SYS(5)+CURDIR()+'\aaa.xls')
exl.visible=.T.
EXL.activesheet.name="Mij.Fixe"
EXL.activesheet.tab.color=RGB(255,0,0)

exl.ActiveSheet.Columns("a:a").ColumnWidth=8
exl.ActiveSheet.Columns("b:b").ColumnWidth=8
exl.ActiveSheet.Columns("c:c").ColumnWidth=12
exl.ActiveSheet.Columns("d:d").ColumnWidth=40
exl.ActiveSheet.Columns("e:e").ColumnWidth=30
exl.ActiveSheet.Columns("f:f").ColumnWidth=6
exl.ActiveSheet.Columns("g:g").ColumnWidth=6
exl.ActiveSheet.Columns("h:h").ColumnWidth=8
exl.ActiveSheet.Columns("i:i").ColumnWidth=8

exl.ActiveSheet.Range("a1:r1").FONT.color=RGB(255,0,255)
exl.ActiveSheet.Range("a1:r1").Font.Bold ='True'
exl.ActiveSheet.Range("a1:r1").FONT.size=10
exl.ActiveSheet.Range("a1:r1").borders.LineStyle=1
exl.ActiveSheet.Range("a1:r1").interior.colorindex=35

exl.cells(1,1).Value="Nr.INV"
exl.cells(1,2).Value="DEPART"
exl.cells(1,3).Value="COD CLASIF"
exl.cells(1,4).Value="DENUMIRE MIFIX"
exl.cells(1,5).Value="ELEMENT IDENTIFICARE"
exl.cells(1,6).Value="AN FU"
exl.cells(1,7).Value="LU FU"
exl.cells(1,8).Value="DUR.NOR"
exl.cells(1,9).Value="DUR.CON"

exl.ActiveSheet.Columns("a:r").EntireColumn.AutoFit

Problema e ca fisierul in excel trebuie sa fie gata de tiparire
Deci ar mai fi doua probleme :
1. cum pot sa inserez unul sau doua randuri in fata tabelului  pentru a putea trece titlul
2. cum as putea sa fac " all border" pe toate liniile din tabelul excel :
    - exista o funtie de genul count sau counta :
     .......  .Range("a1:r(count)").borders.LineStyle=1
 ???

Am studiat linkurile postate pentru export in Office Excel , dar nu am gasit nimic.
 3/15/2009 9:30:50 AM
User is offlineDaniel Buduru
2141 posts
1st




Re: Formatare Excel
 (N/A) Modified By Daniel Buduru  on 3/16/2009 12:01:30 AM)
exl=CREATEOBJECT("excel.application")
exl.workbooks.open(SYS(5)+CURDIR()+'\aaa.xls')
exl.visible=.T.
EXL.activesheet.name="Mij.Fixe"

os=exl.ActiveSheet    && Daca faci asa va functiona IntelliSense in VFP ...
os.Rows('1:2').Insert
lcLastCell=ox.ActiveCell.SpecialCells(11).Address()
lcLastCol=STREXTRACT(lclastCell,'$','$',1)
lcLastRow=STREXTRACT(lclastCell,'$','$',2,2)
os.Range('c1',lcLastCell).BorderAround(1,4)
cc=lclastCol+'2'
os.Range('a1',cc).Merge
os.Range('a1',cc).Value='Titlu'
os.Range('a1',cc).VerticalAlignment=2
os.Range('a1',cc).HorizontalAlignment=3
os.Range('a1',cc).Font.Bold=1




Daniel Buduru
 3/15/2009 6:11:24 PM
User is offlineBlinkyBill
34 posts


Re: Formatare Excel
 (N/A)
Ms.
  Cel putin o bere !!!

 3/16/2009 10:29:06 AM
User is offlineBlinkyBill
34 posts


Re: Formatare Excel
 (N/A)
ceva nu e in ordine
    lcLastCell=ox.ActiveCell.SpecialCells(11).Address()

 3/16/2009 10:32:54 AM
User is offlineDaniel Buduru
2141 posts
1st




Re: Formatare Excel
 (N/A)
Eroare de tastare. Nu am MS Office instalat (merg pe Open Office) si nu pot testa codul ...
Corect e:
lcLastCell=os.ActiveCell.SpecialCells(11).Address()


Daniel Buduru
 3/16/2009 10:48:07 AM
User is offlineBlinkyBill
34 posts


Re: Formatare Excel
 (N/A)
Asa am corectat si eu dar aparare eroarea :
   Activ cell does not evaluate to an object
 3/16/2009 10:52:41 AM
User is offlineBlinkyBill
34 posts


Re: Formatare Excel
 (N/A)
Asa am corectat si eu dar aparare eroarea :
   Activ cell does not evaluate to an object
 3/16/2009 11:30:53 AM
User is offlineDaniel Buduru
2141 posts
1st




Re: Formatare Excel
 (N/A) Modified By Daniel Buduru  on 3/16/2009 11:32:17 AM)
Da, nu era os, era exl ... de obicei, eu numesc obiectul excel ox. Obisnuinta e a doua natura ...
ActiveCell e proprietate a obiectului excel.application
deci:
lcLastCell=exl.ActiveCell.SpecialCells(11).Address()
unde exl=CREATEOBJECT('excel.application')


Daniel Buduru
 3/16/2009 11:54:35 AM
User is offlineBlinkyBill
34 posts


Re: Formatare Excel
 (N/A)
2 Beri
 3/16/2009 12:15:06 PM
User is offlineBlinkyBill
34 posts


Re: Formatare Excel
 (N/A)
Pentru inca o bere :
 
    setarea paginii pe landscape
 3/16/2009 12:31:33 PM
User is offlineDaniel Buduru
2141 posts
1st




Re: Formatare Excel
 (N/A)
os.PageSetup.Orientation= 2  && xlLandscape
Daniel Buduru
 3/16/2009 2:58:35 PM
User is offlinecostin_mentor
484 posts
www.accessoft.ro
2nd




Re: Formatare Excel
 (N/A)

Imi poti spune te rog daca se poate din vfp9 sa pot deschide/crea automat(din cod) un fisier cu extensia doc sau xls cu openoffice si sa pot face in el aceleasi prelucrari pe care le pot face cu microsoft office(de exemplu intr-un doc sa inlocuiesc automat prin cod ceva in cadrul documentului) . Daca mi-ai indica un link de unde m-as putea documenta as fi recunoscator.
Multumesc
 3/16/2009 3:09:53 PM
User is offlineDaniel Buduru
2141 posts
1st




Re: Formatare Excel
 (N/A) Modified By Daniel Buduru  on 3/16/2009 5:04:51 PM)
Open Office suporta automation, dar, neavand Type Lybrary, Intellisense nu functioneaza, ceea ce face lucrul cu Open Office mai dificil decat cu MS Office. In schimb e free si deschide toate documentele MS Office.
Ceva documentatie:
http://udk.openoffice.org/common/man/tutorial/office_automation.html

http://www.google.com/url?q=http://wi.wu-wien.ac.at/rgf/diplomarbeiten/BakkStuff/2005/200501_OOo-Augustin/200501_BSF-Examples_Augustin.pdf&ei=nk2-SYHhFcWLsAbhxdDoDg&sa=X&oi=spellmeleon_result&resnum=2&ct=result&cd=1&usg=AFQjCNHHXnAZ035RFNYqCgmqynF7OcYnqw

http://wiki.services.openoffice.org/wiki/UNO_automation_with_a_binary_(executable)

http://wiki.services.openoffice.org/wiki/Documentation/DevGuide/OpenOffice.org_Developers_Guide

http://www.tedroche.com/Present/VFPOOoAutomation.htm

http://www.foxite.com/archives/openoffice-writer-automation-with-vfp9-0000204779.htm

Ultimul post din pagina contine o colectie de functii vfp pentru manipulare documentelor OpenOffice
http://www.tek-tips.com/viewthread.cfm?qid=1514000&page=1


Daniel Buduru
 3/17/2009 9:35:45 AM
User is offlineBlinkyBill
34 posts


Re: Formatare Excel
 (N/A)
am scris urmatoarea secventa de cod :
 care ar face totalul coloanei J si-l afiseaza sub tabel

rr=STR(VAL(lclastRow)+1,2)
os.range('j'+rr).formula="=SUM(j4:'j'+'lclastRow')"

dar apare o eroare .
 ???


 3/17/2009 9:42:48 AM
User is offlineDaniel Buduru
2141 posts
1st




Re: Formatare Excel
 (N/A) Modified By Daniel Buduru  on 3/17/2009 9:45:53 AM)
rr=TRAN(VAL(lcLastRow)+1)
os.range('j'+rr).formula="=SUM(j4:j" + lclastRow +  ")"

Daniel Buduru
 3/17/2009 10:02:02 AM
User is offlineBlinkyBill
34 posts


Re: Formatare Excel
 (N/A)
Mersi .
cred ca cu ghilimele n-am incercat !

O juma de bere , ca-i criza mare !!!
 3/18/2009 10:29:48 AM
User is offlineBlinkyBill
34 posts


Re: Formatare Excel
 (N/A)
Se poate seta marginile paginii in Excel , la tiparire (print preview)
 ceva de genul : os.PageSetup.topmarginin= 2
                        os.PageSetup.leftmarginin= 5
 3/18/2009 10:56:27 AM
User is offlineDaniel Buduru
2141 posts
1st




Re: Formatare Excel
 (N/A)
Nu stiu de ce nu activezi IntelliSense ... ti-ar face viata mai usoara ...
Oricum, in excel dimensiunile sunt in points.

os.PageSetup.TopMargin=exl.Application.CentimetersToPoints(2)
os.PageSetup.LeftMargin=exl.Application.CentimetersToPoints(5)



Daniel Buduru
 3/18/2009 2:21:18 PM
User is offlineBlinkyBill
34 posts


Re: Formatare Excel
 (N/A)
A mers exact cum am banuit !
A iesit un  export in excel perfect.

  O singura nelamurire :
     Ce este si cum se activeaza IntelliSense .
  Tot ai pomenit de el .   


Multumesc pentru ajutor
 3/18/2009 2:29:07 PM
User is offlineDaniel Buduru
2141 posts
1st




Re: Formatare Excel
 (N/A)
Daca excel VBA nu ai documentatie, inteleg. Dar la VFP ai sigur.
Executa asta in fereastra de comenzi:

HELP intellisense

Daniel Buduru
 3/19/2009 8:26:34 AM
User is offlineBlinkyBill
34 posts


Re: Formatare Excel
 (N/A)
Multumesc mult .
  A iesit perfect . Las codul la vedere :

select 5
m.data=luna+' '+STR(an,4)
*----------

SELECT 1
nnn=THISFORM.txtNr_inv.Value
COPY TO obinv.xls TYPE xls

exl=CREATEOBJECT("excel.application")
exl.workbooks.open(SYS(5)+CURDIR()+'\obinv.xls')
exl.visible=.T.
EXL.activesheet.name="Ob.inv"
EXL.activesheet.tab.color=RGB(255,0,0)

os=exl.ActiveSheet    && Daca faci asa va functiona IntelliSense in VFP ...
os.PageSetup.Orientation= 2  && xlLandscape
os.PageSetup.TopMargin=5
os.PageSetup.BottomMargin=5
os.PageSetup.LeftMargin=30
os.PageSetup.RightMargin=5
os.Rows('1:2').Insert && Inserrez 2 randuri la inceput de tabel


lcLastCell=exl.ActiveCell.SpecialCells(11).Address() && ultima celula completata
lcLastCol=STREXTRACT(lclastCell,'$','$',1)           && ultima coloana completata     
lcLastRow=STREXTRACT(lclastCell,'$','$',2,2)         && ultimul rand completat
os.Range('a3',lcLastCell).Borders.LineStyle=1 && - grila
os.Range('a3',lcLastCell).BorderAround(1,4)   && - chenar linie groasa

cc=lclastCol+'2'
os.Range('a1',cc).Merge
os.Range('a1',cc).Value='OBIECTE DE INVENTAR'+'      --        '+m.data
os.Range('a1',cc).VerticalAlignment=2
os.Range('a1',cc).HorizontalAlignment=3
os.Range('a1',cc).Font.Bold=1
os.Range('a1',cc).Font.color=RGB(0,0,255)

ll=allTRIM(STR(VAL(lclastRow)+1,5))
os.range('g'+ll).formula="=SUM(g4:g"+lclastRow+")"
os.Range('a'+ll,'l'+ll).font.color=RGB(0,0,255)
os.Range('a'+ll,'l'+ll).font.bold='True'
os.Range('c'+ll).Value='TOTAL '
os.Range('a'+ll,'l'+ll).Borders.LineStyle=1 && - gridul de la total
os.Range('a'+ll,'l'+ll).BorderAround(1,4)

os.Columns("a:a").ColumnWidth=6
os.Columns("b:b").ColumnWidth=40
os.Columns("c:c").ColumnWidth=12
os.Columns("d:d").ColumnWidth=4
os.Columns("e:e").ColumnWidth=6
os.Columns("f:f").ColumnWidth=12
os.Columns("g:g").ColumnWidth=12
os.Columns("h:h").ColumnWidth=12
os.Columns("i:i").ColumnWidth=6
os.Columns("j:j").ColumnWidth=30
os.Columns("k:k").ColumnWidth=6
os.Columns("l:l").ColumnWidth=5
os.Range("a1:l1").Font.Bold ='True'

os.Range("a3:l3").FONT.color=RGB(255,0,255)
os.Range("a3:l3").Font.Bold ='True'
os.Range("a3:l3").FONT.size=10
os.Range("a3:l3").borders.LineStyle=1
os.Range("a3:l3").interior.colorindex=40

exl.cells(3,1).Value="Nr.INV"
exl.cells(3,2).Value="DENUMIRE"
exl.cells(3,3).Value="COD OB."
exl.cells(3,4).Value="UM"
exl.cells(3,5).Value="CANTITATE"
exl.cells(3,6).Value="PRET"
exl.cells(3,7).Value="VALAORE"
exl.cells(3,8).Value="DATA PF"
exl.cells(3,9).Value="DURATA"
exl.cells(3,10).Value="POSESORUL OB.INVENTAR"
exl.cells(3,11).Value="MARCA"
exl.cells(3,12).Value="DEPARTAMENT"

exl.ActiveSheet.Columns("a:l").EntireColumn.AutoFit

*--------------

    Sa ajute si pe altii !!!
 7/5/2010 1:00:37 PM
User is offlineioandan_chelemen2006
200 posts
4th


Re: Formatare Excel
 (N/A) Modified By ioandan_chelemen2006  on 7/5/2010 12:07:07 PM)
1.care e comanda prin care setez o coloana sa fie de tip number fara zecimale (de ex.: un cimp CNP de 13 cifre) 2.cum inserez o coloana in fata tabelului in care sa am o numerotare a liniilor tabelului, de ex. numar curent
 7/5/2010 5:58:46 PM
User is offlineGrigore Dolghin
3522 posts
www.class-software.eu
1st






Re: Formatare Excel
 (N/A)
Activeaza inregistrarea unui macro in Excel si fa singur cele doua operatiuni, apoi uite-te in codul macro-ului. Intructiunile sunt identice si in Foxpro.

Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 7/8/2010 4:04:17 PM
User is offlineioandan_chelemen2006
200 posts
4th


Re: Formatare Excel
 (N/A)
exl.Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _:=False, Transpose:=False imi da syntax error ce gresec ?
 7/8/2010 5:21:55 PM
User is offlineDaniel Buduru
2141 posts
1st




Re: Formatare Excel
 (N/A)
 ioandan_chelemen2006 wrote
exl.Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _:=False, Transpose:=False imi da syntax error ce gresec ?


Ai copiat comanda ca atare dinttr-un alt limbaj, nu ai transpus sintaxa si nu ai inlocuit constantele.
Gasesti constantele aici:
http://msdn.microsoft.com/en-us/library/aa221100%28office.11%29.aspx

Iar sintaxa este asta:

exl.Selection.PasteSpecial(xlPasteType, xlPasteOperation, SkipBlanks, Transpose)

Daca exl.Selection permite PasteSpecial, atunci comanda asta ar trebui sa functioneze:

exl.Selection.PasteSpecial(-4163,-4142,0,0)



Daniel Buduru
 7/8/2010 5:33:08 PM
User is offlineGrigore Dolghin
3522 posts
www.class-software.eu
1st






Re: Formatare Excel
 (N/A)
Ok, reformulez (desi ma asteptam sa-ti dai seama ca o sa fie niste diferente de sintaxa; de exemplu, operatorul := nu exista in foxpro, si niste minime cunostinte de VBA sunt necesare cand vrei sa lucrezi cu Office Automation)

Sintaxa care iti trebuie tie este:

exl.Selection.PasteSpecial(-4163, -4142, .F., .F.)

Intellisense te ajuta sa te descurci cu numele parametrilor si ordinea lor, dar nu-ti spune de unde sa iei valorile alea numerice.  xlPasteValues, xlNone, etc, sunt constante definite in Excel. In realitate valoarea acelor constate e numerica. Poti sa folosesti constantele direct din FoxPro daca le definesti in prealabil undeva la inceputul metodei, astfel:

#Define xlPasteValues -4163
#Define xlNone -4142
#Define False .F.
#Define True .T.

sau daca le salvezi pe toate intr-un fisier cu extensia .H pe care il importi la inceputul metodei, astfel:

#Include "nume_fisier.h"

In cazul in care definesti sau importi constantele, sintaxa de mai sus arata asa:

exl.Selection.PasteSpecial(xlPasteValues, xlNone, False, False)


Pentru a afla lista tuturor constantelor si a valorilor lor procedezi astfel: (urmareste pas cu pas, fix instructiunile pe care ti le dau aici)

#1. Deschizi Visual FoxPro (presupun ca ai excelul instalat)
#2. Te duci in meniul Tools si alegi "Object Browser"
#3. In fereastra lu' Object Browser faci click pe primul buton din stanga, in toolbar. (Tooltip-ul este "Open Type Library")
#4. In fereastra care iti apare te duci in tabul al doilea ("COM libraries"), daca nu se duce singur.
#5. In lista de obiecte COM cauti Excel. Daca nu-l gasesti, dai pe browse si cauti excel.exe pe disc. Fereastra aia o sa se inchida si ajungi din nou in Object Browser, da' acu' ai Excel in tree-ul din stanga.
#6. Expandezi nodul Excel si apoi expandezi nodul Constants. Object Browserul o sa inceapa sa lucreze si dupa un timp o sa-ti arate toate constantele definite acolo.
#7. Faci click pe cuvantul "Constants" si tragi cu mouse-ul pana in Command Window-ul din foxpro. Si o sa te trezesti cu toate constantele, scrise frumos sub forma #DEFINE xlAll -4104, etc, etc, etc, una sub alta.
#8. Copiezi textul ala intr-un fisier numit excel.h, de exemplu.
#9. There you go.


Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
  Visual FoxPro  Rapoarte si generatoare de rapoarte  Formatare Excel...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement