---
title: Html.Table – แยกข้อมูลจากตารางในหน้า HTML
url: https://www.thepexcel.com/functions/power-query/accessing-data-functions/html-table/
type: function-explainer
program: Power Query
syntax: "Html.Table(html as any, columnNameSelectorPairs as list, optional options as nullable record) as table"
date: 2025-12-12
updated: 2025-12-24
scores:
  popularity: 6
  difficulty: 3
  usefulness: 6
---

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

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

## คำอธิบาย

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

## Syntax

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

## Arguments

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

## ตัวอย่าง

### 1. ดึงข้อมูลจากตารางธรรมชาติ

```excel
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
```

**ผลลัพธ์:** `Table with 2 rows: Name='John', Role='Manager'; Name='Jane', Role='Engineer'`

ใช้ Html.Table ดึงข้อมูลจาก HTML โดยระบุ CSS selector .name สำหรับคอลัมน์ Name และ .role สำหรับคอลัมน์ Role ทำให้ได้ตารางข้อมูลที่มีโครงสร้างสำเร็จ

### 2. ดึง href attribute จาก anchor tags

```excel
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
```

**ผลลัพธ์:** `Table with 2 rows: Link URL='/page1.html'; Link URL='/page2.html'`

ใช้ transformation function (each [Attributes][href]) เพื่อดึง href attribute จาก element  แล้วใช้ RowSelector="a" เพื่อกำหนดว่าแต่ละแถวคือ element

### 3. ดึงข้อมูลจาก HTML ที่มีโครงสร้างซับซ้อน

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

**ผลลัพธ์:** `Table containing product names, prices, and links extracted from the webpage`

นี่คือตัวอย่างจริงจังที่ดึงข้อมูลจาก URL โดย Web.BrowserContents ก่อน แล้วใช้ Html.Table สกัดข้อมูลผลิตภัณฑ์ ราคา และ links - ประเมินว่า HtmlContent เป็น HTML string ที่ได้จากเพจ

## หมายเหตุเพิ่มเติม

- เสมอๆ ลองใช้ RowSelector ถ้าไม่แน่ใจ - มันมักช่วยได้เวลา HTML ไม่เป็นตารางปกติ

- ใช้ each [Attributes] เมื่อต้องดึง attributes เช่น href, src, title ฯลฯ

- ใช้ each [Value] เมื่อต้องดึงเนื้อหาข้อความภายใน element

- ทดสอบ CSS selector ของคุณก่อนใน browser developer tools (F12) เพื่อให้แน่ใจว่า selector ถูกต้อง

- ถ้า HTML มีมากโครงสร้างซับซ้อน ลองสร้างเพิ่มเติม transformation function เพื่อประมวลผล data ตามต้องการ

- หลีกเลี่ยง Web.BrowserContents ถ้าสามารถใช้ API ที่ return JSON ได้ - มันเร็วและเสถียรกว่า

## คำถามที่พบบ่อย

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

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

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

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

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

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

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

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

## แหล่งข้อมูลเพิ่มเติม

- [Microsoft Learn: Html.Table](https://learn.microsoft.com/en-us/powerquery-m/html-table) _(official)_
- [Microsoft Learn: Html.Elements](https://learn.microsoft.com/en-us/powerquery-m/html-elements) _(official)_
- [Microsoft Learn: Web.Page](https://learn.microsoft.com/en-us/powerquery-m/web-page) _(official)_
- [CSS Selectors Reference](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Selectors) _(article)_

---

_Source: [https://www.thepexcel.com/functions/power-query/accessing-data-functions/html-table/](https://www.thepexcel.com/functions/power-query/accessing-data-functions/html-table/)_
