Hi,
Is there any function / utility which can export data from grid to excel?
Regards.
Sudip
Grid To Excel
Moderator: Rathinagiri
Grid To Excel
With best regards,
Sudip
Sudip
Re: Grid To Excel
Hi Sudip!
I think, there is no function to export to excel.
You must to do it manually...
Here I paste my function to export to excel:
I think, there is no function to export to excel.
You must to do it manually...
Here I paste my function to export to excel:
function EksportDoLBH
LOCAL oExcel, oAktArkusz, pom, nrwiersza, nZakres
private TabOB := {}
private plikLBH := folderLBH
if month(OkGl_Akord.D_OdDnia.Value) <> month(OkGl_Akord.D_DoDnia.Value)
MsgBox("Obecnie nie można eksportować danych z różnych miesięcy!!!")
return
endif
plikLBH += "\LBH."+n2c(month(OkGl_Akord.D_OdDnia.Value),2)+"."+str(year(OkGl_Akord.D_OdDnia.Value),4)+".xls"
MsgBox(plikLBH)
if !file(plikLBH)
MsgBOX('W podanej lokalizacji "'+FolderLBH+'"nie znaleziono pliku LBH!!!')
return
endif
if !UstawBazy( { {"dane\akord",,3,.f.}, {"dane\czaspr",,2,.f.} } ,0,TabOB)
return
endif
SetProperty("OkGl_Akord", "L_StatusEksportu","Value","Otwieranie arkusza LBH...")
OkGl_Akord.L_StatusEksportu.Value := "Otwieranie arkusza LBH..."
OkGl_Akord.L_StatusEksportu.SetFocus
OkGl_Akord.L_StatusEksportu.Visible := .t.
//SetProperty("OkGl_Akord", "L_StatusEksportu","Visible", .t.)
oExcel := CreateObject( "Excel.Application")
oExcel:Workbooks:Open( plikLBH)
//oAktArkusz := oExcel:ActiveSheet
//msgbox(type("oAktArkusz"))
//msgbox("Aktywny arkusz to: "+oAktArkusz:name)
//msgbox("Arkusz "+xtoc(oExcel:Sheets:Item(2)))
//oExcel:WorkSheets("Aktivitäten"):Select()
oExcel:Sheets(2):Select()
oAktArkusz := oExcel:ActiveSheet
//msgbox("Aktywny arkusz to: "+oAktArkusz:name)
// znajdź pierwszą wolną komórkę
nrWiersza := 2
//SetProperty("OkGl_Akord", "L_StatusEksportu","Visible", .t.)
OkGl_Akord.L_StatusEksportu.Value := "Trwa wyszukiwanie miejsca na wpisy do arkusza. Proszę czekać..."
//SetProperty("OkGl_Akord", "L_StatusEksportu","Value","Trwa wyszukiwanie miejsca na wpisy do arkusza. Proszę czekać...")
do while !empty(oAktArkusz:Cells( nrWiersza, 3 ):Value)
nrWiersza++
enddo
//nrWiersza := 2000
PoczNrWiersza := nrWiersza
SetProperty("OkGl_Akord", "L_StatusEksportu","Value","Dane wyeksportowane znajdują się od wiersza: "+str(nrWiersza))
SetProperty("OkGl_Akord", "L_ProszeCzekac","Visible", .t.)
select("akord")
set order to 1
go top
DBSeek(dtos(OKGL_Akord.D_DoDnia.Value),.t.)
nZakres := recno()
DBSeek(dtos(OKGL_Akord.D_OdDnia.Value),.t.)
nZakres -= recno()
SetProperty("OkGl_Akord", "ProgressBar_1","Visible", .t.)
SetProperty("OkGl_Akord", "ProgressBar_1","RangeMax", nZakres)
nZakres := 0
do while akord->data <= OKGL_Akord.D_DoDnia.Value .and. !eof()
SetProperty("OkGl_Akord", "ProgressBar_1","Value", nZakres++)
reclock(0)
lZapisWiersza := .f.
lZerowanieWiersza := .f.
if akord->FazaExport == 0 .or. akord->FazaExport == 11
nWierszDanych := nrWiersza
lZapisWiersza := .t.
lZerowanieWiersza := .f.
nFazaExportu := 11
nrWiersza ++
endif
if akord->FazaExport == 2 .or. akord->FazaExport == 12
// rekord po poprawie - ponowny zapis - ale we właściwe miejsce
nWierszDanych := akord->XLSWiersz
lZapisWiersza := .t.
lZerowanieWiersza := .f.
nFazaExportu := 12
endif
if akord->FazaExport == 3 .or. akord->FazaExport == 13
nWierszDanych := akord->XLSWiersz
lZapisWiersza := .f.
lZerowanieWiersza := .t.
nFazaExportu := 13
endif
if lZapisWiersza
// zapis do Arkusza
oAktArkusz:Cells( nWierszDanych, 1 ):Value := alltrim(akord->NrMaszyny)
oAktArkusz:Cells( nWierszDanych, 2 ):Value := akord->NrPrac
oAktArkusz:Cells( nWierszDanych, 3 ):Value := akord->Data
oAktArkusz:Cells( nWierszDanych, 3 ):NumberFormat := "dd-mmm-rr"
oAktArkusz:Cells( nWierszDanych, 4 ):Value := akord->(N2C(PoczGodz,2)+":"+N2C(PoczMin,2)+":00")
oAktArkusz:Cells( nWierszDanych, 4 ):NumberFormat := "gg:mm"
oAktArkusz:Cells( nWierszDanych, 5 ):Value := akord->(N2C(KoncGodz,2)+":"+N2C(KoncMin,2)+":00")
oAktArkusz:Cells( nWierszDanych, 5 ):NumberFormat := "gg:mm"
oAktArkusz:Cells( nWierszDanych, 6 ):NumberFormat := "##0"
oAktArkusz:Cells( nWierszDanych, 6 ):Value := akord->IleMinut
oAktArkusz:Cells( nWierszDanych, 7 ):Value := alltrim(akord->NrCzynnosc)
oAktArkusz:Cells( nWierszDanych, 8 ):Value := alltrim(akord->NrZlecenia)
oAktArkusz:Cells( nWierszDanych, 9 ):Value := alltrim(akord->NrCzesci)
oAktArkusz:Cells( nWierszDanych, 10):Value := akord->Ilosc
oAktArkusz:Cells( nWierszDanych, 11):Value := akord->Odpad1
oAktArkusz:Cells( nWierszDanych, 12):Value := akord->Odpad2
oAktArkusz:Cells( nWierszDanych, 13):Value := akord->Odpad3
oAktArkusz:Cells( nWierszDanych, 14):Value := akord->Odpad4
oAktArkusz:Cells( nWierszDanych, 15):Value := akord->Odpad5
oAktArkusz:Cells( nWierszDanych, 16):Value := akord->Odpad6
oAktArkusz:Cells( nWierszDanych, 17):Value := akord->Odpad7
replace ;
akord->xls_Wiersz with nWierszDanych,;
akord->FazaExport with nFazaExportu
endif
if lZerowanieWiersza
// zapis do Arkusza
oAktArkusz:Cells( nWierszDanych, 1 ):Value := ""
oAktArkusz:Cells( nWierszDanych, 2 ):Value := ""
oAktArkusz:Cells( nWierszDanych, 3 ):Value := akord->Data
oAktArkusz:Cells( nWierszDanych, 3 ):NumberFormat := "dd-mmm-rr"
oAktArkusz:Cells( nWierszDanych, 4 ):Value := ""
oAktArkusz:Cells( nWierszDanych, 4 ):NumberFormat := "gg:mm"
oAktArkusz:Cells( nWierszDanych, 5 ):Value := ""
oAktArkusz:Cells( nWierszDanych, 5 ):NumberFormat := "gg:mm"
oAktArkusz:Cells( nWierszDanych, 6 ):NumberFormat := "##0"
oAktArkusz:Cells( nWierszDanych, 6 ):Value := 0
oAktArkusz:Cells( nWierszDanych, 7 ):Value := ""
oAktArkusz:Cells( nWierszDanych, 8 ):Value := ""
oAktArkusz:Cells( nWierszDanych, 9 ):Value := ""
oAktArkusz:Cells( nWierszDanych, 10):Value := ""
oAktArkusz:Cells( nWierszDanych, 11):Value := ""
oAktArkusz:Cells( nWierszDanych, 12):Value := ""
oAktArkusz:Cells( nWierszDanych, 13):Value := ""
oAktArkusz:Cells( nWierszDanych, 14):Value := ""
oAktArkusz:Cells( nWierszDanych, 15):Value := ""
oAktArkusz:Cells( nWierszDanych, 16):Value := ""
oAktArkusz:Cells( nWierszDanych, 17):Value := ""
replace ;
akord->xlsWiersz with nWierszDanych,;
akord->FazaExport with nFazaExportu
endif
unlock
lZapisWiersza := .f.
lZerowanieWiersza := .f.
skip
enddo
SetProperty("OkGl_Akord", "L_StatusEksportu","Value","Wyeksportowano dane. Zapisano od wiersza "+alltrim(str(PoczNrWiersza)))
oExcel:Visible := .t.
if MsgYesNO("Potwierdzasz prawidłowość wykonania operacji eksportu")
// tutaj można zaznaczyć rekordy, że zostały wyeksportowane
DBSeek(dtos(OKGL_Akord.D_OdDnia.Value),.t.)
do while akord->data <=OKGL_Akord.D_DoDnia.Value .and. !eof()
if akord->FazaExport>10
reclock(0)
replace ;
FazaExport with 1
unlock
endif
skip
enddo
endif
SetProperty("OkGl_Akord", "L_StatusEksportu","Visible", .t.)
ZamknijBazy(TabOB)
SetProperty("OkGl_Akord", "L_ProszeCzekac","Visible", .f.)
SetProperty("OkGl_Akord", "ProgressBar_1","Visible", .f.)
//oExcel:Save()
//oExcel:SaveAs(plikLBH)
//oExcel:Quit()
return
Re: Grid To Excel
Hello MOL,
Thank you very much.
I copied your code and saved it in my computer. I had my own dbf to excel code written in xharbour. Now I shall check for changes regarding object declaration etc.
With best regards.
Sudip
Thank you very much.
I copied your code and saved it in my computer. I had my own dbf to excel code written in xharbour. Now I shall check for changes regarding object declaration etc.
With best regards.
Sudip
With best regards,
Sudip
Sudip
Re: Grid To Excel
I have problem with this function on some installations of office. But I think - it's a matter of office, not HMG
regards, Marek
regards, Marek
Re: Grid To Excel
Hi Marek,
No problem.
I have created a generic example of dbf to excel and uploaded into "My HMG Projects" section. Can you please check it and send me your advice?
With best reagards.
Sudip
No problem.
I have created a generic example of dbf to excel and uploaded into "My HMG Projects" section. Can you please check it and send me your advice?
With best reagards.
Sudip
With best regards,
Sudip
Sudip