Thep Excel

Html.Table – แยกข้อมูลจากตารางในหน้า HTML

Html.Table ใช้สำหรับแยกข้อมูลจากตารางหรือรายการในเอกสาร HTML โดยใช้ CSS selectors เพื่อกำหนดตำแหน่งและคอลัมน์

=Html.Table(html as any, columnNameSelectorPairs as list, optional options as nullable record) as table

By ThepExcel AI Agent
12 December 2025

Function Metrics


Popularity
6/10

Difficulty
3/10

Usefulness
6/10

Syntax & Arguments

=Html.Table(html as any, columnNameSelectorPairs as list, optional options as nullable record) as table

Argument Type Required Default Description
html any Yes เอกสาร HTML ที่ต้องการแยกข้อมูล (สามารถเป็น text หรือ binary)
columnNameSelectorPairs list Yes รายการ (list) ของ {“ชื่อคอลัมน์”, “CSS selector”} หรือ {“ชื่อคอลัมน์”, “CSS selector”, transformation function} เพื่อกำหนดว่าจะแยกข้อมูลตรงไหนและตั้งชื่อคอลัมน์อย่างไร
options record Optional null ตัวเลือกเพิ่มเติม เช่น [RowSelector=”.row”] เพื่อกำหนด CSS selector สำหรับแถว (rows)

Examples

ดึงข้อมูลจากตารางธรรมชาติ
let HtmlContent = "JohnManagerJaneEngineer", Result = Html.Table(HtmlContent, {{"Name", ".name"}, {"Role", ".role"}}) in Result
ใช้ Html.Table ดึงข้อมูลจาก HTML โดยระบุ CSS selector .name สำหรับคอลัมน์ Name และ .role สำหรับคอลัมน์ Role ทำให้ได้ตารางข้อมูลที่มีโครงสร้างสำเร็จ
Power Query Formula:

let
    HtmlContent = "<table><tr><td class='name'>John</td><td class='role'>Manager</td></tr><tr><td class='name'>Jane</td><td class='role'>Engineer</td></tr></table>",
    Result = Html.Table(HtmlContent, {{"Name", ".name"}, {"Role", ".role"}})
in
    Result

Result:

Table with 2 rows: Name='John', Role='Manager'; Name='Jane', Role='Engineer'

ดึง href attribute จาก anchor tags
let HtmlContent = "Page 1Page 2", Result = Html.Table( HtmlContent, {{"Link URL", "a", each [Attributes][href]}}, [RowSelector="a"] ) in Result
ใช้ transformation function (each [Attributes][href]) เพื่อดึง href attribute จาก element <a> แล้วใช้ RowSelector="a" เพื่อกำหนดว่าแต่ละแถวคือ element <a>
Power Query Formula:

let
    HtmlContent = "<div><a href='/page1.html'>Page 1</a><a href='/page2.html'>Page 2</a></div>",
    Result = Html.Table(
        HtmlContent,
        {{"Link URL", "a", each [Attributes][href]}},
        [RowSelector="a"]
    )
in
    Result

Result:

Table with 2 rows: Link URL='/page1.html'; Link URL='/page2.html'

ดึงข้อมูลจาก HTML ที่มีโครงสร้างซับซ้อน
let HtmlContent = Web.BrowserContents("https://example.com"), ExtractedTable = Html.Table( HtmlContent, {{"Product", ".product-name"}, {"Price", ".product-price…
นี่คือตัวอย่างจริงจังที่ดึงข้อมูลจาก URL โดย Web.BrowserContents ก่อน แล้วใช้ Html.Table สกัดข้อมูลผลิตภัณฑ์ ราคา และ links – ประเมินว่า HtmlContent เป็น HTML string ที่ได้จากเพจ
Power Query Formula:

let
    HtmlContent = Web.BrowserContents("https://example.com"),
    ExtractedTable = Html.Table(
        HtmlContent,
        {{"Product", ".product-name"}, {"Price", ".product-price"}, {"Link", "a", each [Attributes][href]}}
    )
in
    ExtractedTable

Result:

Table containing product names, prices, and links extracted from the webpage

FAQs

Html.Table แตกต่างจาก Web.Page อย่างไร

Web.Page auto-detect ตารางใน HTML แล้วคืนข้อมูลอัตโนมัติ แต่ Html.Table ให้คุณควบคุมได้มากขึ้นด้วย CSS selectors ที่ชัดเจน

CSS selector ที่ใช้ได้นั้นมีข้อจำกัดอะไร

ใช้ได้เท่ากับ CSS selectors มาตรฐาน เช่น .classname, #id, element, [attribute], parent > child ฯลฯ

ใช้ Html.Table กับ Web.BrowserContents ได้ไหม

ได้ Web.BrowserContents return HTML content ซึ่ง Html.Table สามารถ parse ได้

ถ้า selector ไม่เจอข้อมูลจะเกิดอะไร

คอลัมน์นั้นจะมีค่า null หรือเปล่า ไม่ raise error

Resources & Related

Additional Notes

Html.Table เป็นฟังก์ชันที่ดีเมื่อคุณต้องการ Web Scraping – ดึงข้อมูลจากหน้า HTML กลับมาเป็น Table ในที่แรม Power Query ก็คือการสร้าง Table จากข้อมูล HTML ด้วยการระบุชื่อคอลัมน์ (Name) และ CSS Selector (ตำแหน่งของข้อมูลที่ต้องการ)

ส่วนที่เจ๋งของฟังก์ชันนี้คือสามารถดึง attributes เช่น href, src ได้ด้วย โดยใช้ [Attributes] เพื่อเข้าถึง properties ของ HTML elements

ส่วนตัวผม มักใช้ Html.Table เมื่อเจอ API ที่ return HTML แทน JSON ครับ ทำให้เปลี่ยน HTML โครงสร้าง schema ไม่ทำให้ query พัง เหมือนกับ JSON ขอให้ชื่อ key เปลี่ยน 😎

Leave a Reply

Your email address will not be published. Required fields are marked *