unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, MSHTML, StdCtrls, OleCtrls, SHDocVw; type TForm1 = class(TForm) Button1: TButton; WebBrowser1: TWebBrowser; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} function GetHtmlTableCell(aTable: IHTMLTable; aRow, aCol: Integer): IHTMLElement; var Row: IHTMLTableRow; begin Result := nil; if aTable = nil then Exit; if aTable.rows = nil then Exit; Row := aTable.rows.item(aRow, aRow) as IHTMLTableRow; if Row = nil then Exit; Result := Row.cells.item(aCol, aCol) as IHTMLElement; end; function GetHtmlTable(aDoc: IHTMLDocument2; aIndex: Integer): IHTMLTable; var list: IHTMLElementCollection; begin Result := nil; if aDoc = nil then Exit; if aDoc.all = nil then Exit; list := aDoc.all.tags('table') as IHTMLElementCollection; if list = nil then Exit; Result := list.item(aIndex, aIndex) as IHTMLTable; end; function GetWebBrowserHtmlTableCellText(const AWebBrowser: TWebBrowser; const TableIndex, RowIndex, ColIndex: Integer; var ResValue: string): Boolean; var Docintf: IHTMLDocument2; tblintf: IHTMLTable; node: IHTMLElement; begin ResValue := ' '; docintf := AWebBrowser.Document as IHTMLDocument2; tblintf := GetHtmlTable(docintf, TableIndex); node := GetHtmlTableCell(tblintf, RowIndex, ColIndex); Result := node <> nil; if Result then ResValue := Trim(node.innerText); end; function GetHtmlTableRowHtml(aTable: IHTMLTable; aRow: Integer): IHTMLElement; var Row: IHTMLTableRow; begin Result := nil; if aTable = nil then Exit; if aTable.rows = nil then Exit; Row := aTable.rows.item(aRow, aRow) as IHTMLTableRow; if Row = nil then Exit; Result := Row as IHTMLElement; end; function GetWebBrowserHtmlTableCellHtml(const AWebBrowser: TWebBrowser; const TableIndex, RowIndex, ColIndex: Integer; var ResValue: string): Boolean; var Docintf: IHTMLDocument2; tblintf: IHTMLTable; node: IHTMLElement; begin ResValue := ' '; docintf := AWebBrowser.Document as IHTMLDocument2; tblintf := GetHtmlTable(docintf, TableIndex); node := GetHtmlTableCell(tblintf, RowIndex, ColIndex); Result := node <> nil; if Result then ResValue := Trim(node.innerHTML); end; function GeHtmlTableHtml(aTable: IHTMLTable; aRow: Integer): IHTMLElement; var Row: IHTMLTableRow; begin Result := nil; if aTable = nil then Exit; if aTable.rows = nil then Exit; Row := aTable.rows.item(aRow, aRow) as IHTMLTableRow; if Row = nil then Exit; Result := Row as IHTMLElement; end; function GetWebBrowserHtmlTableHtml(const AWebBrowser: TWebBrowser; const TableIndex, RowIndex: Integer; var ResValue: string): Boolean; var Docintf: IHTMLDocument2; tblintf: IHTMLTable; node: IHTMLElement; begin ResValue := ' '; docintf := AWebBrowser.Document as IHTMLDocument2; tblintf := GetHtmlTable(docintf, TableIndex); node := GeHtmlTableHtml(tblintf, RowIndex); Result := node <> nil; if Result then ResValue := node.innerHtml; end; procedure TForm1.FormCreate(Sender: TObject); begin WebBrowser1.Navigate('H:\ReadTable\00.html'); end; procedure TForm1.Button1Click(Sender: TObject); var ResValue: string; begin if GetWebBrowserHtmlTableCellText(WebBrowser1, 0, 0, 0, ResValue) then begin ShowMessage(ResValue); end else begin ShowMessage('指定的表格不存在 '); end; end; end. |
|