Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations Mike Lewis on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

HTML to Excel Converter

COM and Automation

HTML to Excel Converter

by  baltman  Posted    (Edited  )
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&
&&&&&&& HTML to Excel Converter
&&&&&&&
&&&&&&& Does not have any logic regarding
&&&&&&& more than 254 Columns or worksheets
&&&&&&& nor over 65K Rows.
&&&&&&&
&&&&&&& Copy and paste into a .PRG!
&&&&&&&
&&&&&&& Brian Altman
&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&
&&&&&&& Built using VFP 7 and Office 2000
&&&&&&& May not work on pre-VFP 7 Systems
&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

PUBLIC oform1

oform1=NEWOBJECT("form1")
oform1.Show
RETURN


DEFINE CLASS form1 AS form
Height = 296
Width = 594
AutoCenter = .T.
Caption = "HTMLs to Excel Workbook Converter"
Name = "Form1"

ADD OBJECT text1 AS textbox WITH ;
Height = 25, ;
Left = 24, ;
Top = 24, ;
Width = 432, ;
Name = "Text1"

ADD OBJECT command1 AS commandbutton WITH ;
Top = 24, ;
Left = 468, ;
Height = 25, ;
Width = 120, ;
Caption = "Get Directory", ;
Name = "Command1"

ADD OBJECT command2 AS commandbutton WITH ;
Top = 240, ;
Left = 336, ;
Height = 37, ;
Width = 120, ;
Caption = "Convert to XL", ;
Visible = .F., ;
Name = "Command2"

ADD OBJECT text2 AS textbox WITH ;
Height = 25, ;
Left = 24, ;
Top = 60, ;
Width = 96, ;
Name = "Text2"

ADD OBJECT list1 AS listbox WITH ;
RowSourceType = 0, ;
RowSource = "", ;
ControlSource = "", ;
Height = 132, ;
Left = 24, ;
Top = 96, ;
Visible = .F., ;
Width = 252, ;
Name = "List1"

ADD OBJECT list2 AS listbox WITH ;
Height = 132, ;
Left = 324, ;
Top = 96, ;
Visible = .F., ;
Width = 253, ;
Name = "List2"

ADD OBJECT command3 AS commandbutton WITH ;
Top = 132, ;
Left = 288, ;
Height = 25, ;
Width = 25, ;
Caption = ">", ;
Visible = .F., ;
Name = "Command3"

ADD OBJECT command4 AS commandbutton WITH ;
Top = 168, ;
Left = 288, ;
Height = 25, ;
Width = 25, ;
Caption = "<", ;
Visible = .F., ;
Name = "Command4"

ADD OBJECT command5 AS commandbutton WITH ;
Top = 96, ;
Left = 288, ;
Height = 25, ;
Width = 25, ;
Caption = ">>", ;
Visible = .F., ;
Name = "Command5"

ADD OBJECT command6 AS commandbutton WITH ;
Top = 204, ;
Left = 288, ;
Height = 25, ;
Width = 25, ;
Caption = "<<", ;
Visible = .F., ;
Name = "Command6"


ADD OBJECT optiongroup1 AS optiongroup WITH ;
ButtonCount = 2, ;
Value = 1, ;
Height = 42, ;
Left = 123, ;
Top = 52, ;
Width = 57, ;
Name = "Optiongroup1", ;
Option1.Caption = "html", ;
Option1.Value = 1, ;
Option1.Height = 16, ;
Option1.Left = 5, ;
Option1.Top = 5, ;
Option1.Width = 61, ;
Option1.Name = "Option1", ;
Option2.Caption = "htm", ;
Option2.Height = 17, ;
Option2.Left = 5, ;
Option2.Top = 24, ;
Option2.Width = 61, ;
Option2.Name = "Option2"

ADD OBJECT command7 AS commandbutton WITH ;
Top = 240, ;
Left = 468, ;
Height = 37, ;
Width = 109, ;
Caption = "Quit", ;
Name = "Command7"

PROCEDURE Init
thisform.text2.Value=".html"
ENDPROC

PROCEDURE Load
RELEASE ALL &&forget stored variables
PUBLIC gcHomedir
gcHomedir=SYS(5)+SYS(2003)
ENDPROC

PROCEDURE Unload
SET DEFAULT TO (gcHomedir)
ENDPROC

PROCEDURE Refresh
SET DEFAULT TO (gcHomedir)
ENDPROC

PROCEDURE command1.Click
cdir=GETDIR()

thisform.text1.value=cdir

SET DEFAULT TO &cdir
arraycount=adir(harray,"*"+ALLTRIM(thisform.text2.value))

IF arraycount>0
thisform.list1.Visible= .T.
thisform.list2.Visible= .T.
thisform.command2.Visible= .T.
thisform.command3.Visible= .T.
thisform.command4.Visible= .T.
thisform.command5.Visible= .T.
thisform.command6.Visible= .T.
thisform.list1.Clear
thisform.list2.Clear

FOR i = 1 TO arraycount
IF lower(alltr(harray(i,1)))#"tables2htm.htm" AND "."+LOWER(JUSTEXT(alltr(harray(i,1))))==LOWER(ALLTRIM(thisform.text2.value))
thisform.list1.AddListItem(harray(i,1),i)
ENDIF
ENDFOR
ENDIF
thisform.list1.refresh

IF thisform.list1.ListCount=0
messagebox("No files with that extension were found","Try Again",0)
ENDIF
ENDPROC

PROCEDURE command2.Click
cdir=SYS(5)+SYS(2003)
exttype4array="'*"+ALLTRIM(UPPER(thisform.text2.Value))+"'"
exttype=ALLTRIM(UPPER(thisform.text2.Value))

IF thisform.list2.ListCount=0
messagebox("No files Selected","Try Again",0)
RETURN
ENDIF

&&start testing
IF DIRECTORY(cdir+"\tables2htm_files")=.f.
MKDIR (cdir+"\tables2htm_files")
ELSE
SET DEFAULT TO (cdir+"\tables2htm_files")
FOR x=1 TO ADIR(temparray,&exttype4array)
ERASE temparray(x,1)
ENDFOR
SET DEFAULT TO &cdir
ENDIF

For workbookcount= 1 TO thisform.list2.ListCount
inputfile=ALLTRIM(thisform.text1.Value)+ALLTRIM(thisform.list2.listitem(workbookcount,1))
COPY FILE &inputfile TO (cdir+"\tables2htm_files\"+ALLTRIM(thisform.list2.listitem(workbookcount,1)))
ENDFOR

&&&&&&& Create "filelist.xml"
XMLFile=Fcreate(cdir+"\tables2htm_files\filelist.xml")
= Fput(XMLFile, "<xml xmlns:eek:='urn:schemas-microsoft-com:eek:ffice:eek:ffice'>")
= Fput(XMLFile, "<o:MainFile HRef='../tables2htm.htm'/>")

For workbookcount= thisform.list2.ListCount TO 1 STEP -1
inputfile=ALLTRIM(thisform.text1.Value)+ALLTRIM(thisform.list2.listitem(workbookcount,1))
wboutputfile=ALLTRIM(thisform.list2.listitem(workbookcount,1))
= Fput(XMLFile, "<o:File HRef='"+wboutputfile+"'/>")
Endfor

= Fput(XMLFile, "<o:File HRef='filelist.xml'/>")
= Fput(XMLFile, "</xml>")
=Fclose(XMLFile)

&&&&&&& Create "tables2htm.htm" for Excel to open
tables2htmFile=Fcreate(Sys(5)+Curdir()+"tables2htm.htm")
= Fput(tables2htmFile, "<html xmlns:eek:="+Chr(34)+"urn:schemas-microsoft-com:eek:ffice:eek:ffice"+Chr(34))
= Fput(tables2htmFile, "xmlns:x="+Chr(34)+"urn:schemas-microsoft-com:eek:ffice:excel"+Chr(34))
= Fput(tables2htmFile, "<head>")
= Fput(tables2htmFile, "<meta name="+Chr(34)+"Excel Workbook Frameset"+Chr(34)+">")
= Fput(tables2htmFile, "<meta http-equiv=Content-Type content="+Chr(34)+"text/html; charset=windows-1252"+Chr(34)+">")
= Fput(tables2htmFile, "<meta name=ProgId content=Excel.Sheet>")
= Fput(tables2htmFile, "<link rel=File-List href="+Chr(34)+"./tables2htm_files/filelist.xml"+Chr(34)+">")
= Fput(tables2htmFile, "<![endif]><!--[if gte mso 9]><xml>")
= Fput(tables2htmFile, "<x:ExcelWorkbook>")
= Fput(tables2htmFile, "<x:ExcelWorksheets>")

For workbookcount= 1 TO thisform.list2.ListCount
tabname=JUSTSTEM(ALLTRIM(thisform.text1.Value)+ALLTRIM(thisform.list2.list(workbookcount)))
= Fput(tables2htmFile, "<x:ExcelWorksheet>")
= Fput(tables2htmFile, "<x:Name>"+tabname+"</x:Name>")
= Fput(tables2htmFile, "<x:WorksheetSource HRef="+Chr(34)+"./tables2htm_files/"+tabname+exttype+Chr(34)+"/>")
= Fput(tables2htmFile, "</x:ExcelWorksheet>")
Endfor

= Fput(tables2htmFile, "</x:ExcelWorkbook>")
= Fput(tables2htmFile, "</xml><![endif]-->")
= Fput(tables2htmFile, "</head>")
= Fput(tables2htmFile, "<noframes>")
= Fput(tables2htmFile, "<body>")
= Fput(tables2htmFile, "</body>")
= Fput(tables2htmFile, "</noframes>")
= Fput(tables2htmFile, "</frameset>")
= Fput(tables2htmFile, "</html>")
=Fclose(tables2htmFile)

&&open with excel
Wait Window Nowait "Exporting Tables to Excel..."

lcOldError = On("ERROR")
On Error loExcel = .Null.
loExcel = Getobject(,"Excel.Application")
On Error &lcOldError

If Isnull(loExcel)
loExcel = Createobject("Excel.Application")
Endif
On Error

With loExcel
.displayalerts=.f.
.WorkBooks.Open(Sys(5)+Curdir()+"tables2htm.htm")
.Visible=.T.
.displayalerts=.t.
Endwith
Set Talk On

SET DEFAULT TO (gcHomedir)

ENDPROC

PROCEDURE list1.DblClick
varitem=thisform.list1.listitem(thisform.list1.ListItemId,1)

IF LEN(ALLTRIM(varitem))>3
thisform.list1.RemovelistItem(thisform.list1.ListItemId)
thisform.list2.AddListItem(varitem)
ENDIF
ENDPROC

PROCEDURE list2.DblClick
varitem=thisform.list2.listitem(thisform.list2.ListItemId,1)

IF LEN(ALLTRIM(varitem))>3
thisform.list2.RemovelistItem(thisform.list2.ListItemId)
thisform.list1.AddListItem(varitem)
ENDIF
ENDPROC

PROCEDURE command3.Click
varitem=thisform.list1.listitem(thisform.list1.ListItemId,1)

IF LEN(ALLTRIM(varitem))>3
thisform.list2.AddListItem(varitem)
thisform.list1.RemovelistItem(thisform.list1.ListItemId)
ENDIF
thisform.refresh
ENDPROC

PROCEDURE command4.Click
varitem=thisform.list2.listitem(thisform.list2.ListItemId,1)

IF LEN(ALLTRIM(varitem))>3
thisform.list1.AddListItem(varitem)
thisform.list2.RemovelistItem(thisform.list2.ListItemId)
ENDIF

thisform.refresh
ENDPROC

PROCEDURE command5.Click
counttocycle=(2+thisform.list1.ListCount)

FOR i = 0 TO counttocycle
thisvar="varitem"+TRANSFORM(i)
&thisvar=thisForm.list1.ListItem(i)
ENDFOR

FOR i = 0 TO counttocycle
thisvar="varitem"+TRANSFORM(i)

IF LEN(ALLTRIM(&thisvar))>3
thisform.list2.AddListItem(&thisvar)
ENDIF

ENDFOR

thisform.list1.clear
ENDPROC

PROCEDURE command6.Click
counttocycle=(2+thisform.list2.ListCount)

FOR i = 0 TO counttocycle
thisvar="varitem"+TRANSFORM(i)
&thisvar=thisForm.list2.ListItem(i)
ENDFOR

FOR i = 0 TO counttocycle
thisvar="varitem"+TRANSFORM(i)

IF LEN(ALLTRIM(&thisvar))>3
thisform.list1.AddListItem(&thisvar)
ENDIF

ENDFOR

thisform.list2.clear
ENDPROC

PROCEDURE optiongroup1.InteractiveChange
IF this.Value=1
thisform.text2.value=".html"
ELSE
thisform.text2.value=".htm"
ENDIF
ENDPROC

PROCEDURE command7.Click
thisform.Release
ENDPROC

ENDDEFINE
Register to rate this FAQ  : BAD 1 2 3 4 5 6 7 8 9 10 GOOD
Please Note: 1 is Bad, 10 is Good :-)

Part and Inventory Search

Back
Top