让 AI 正确读懂表格:从 Excel 到 Markdown/HTML/CSV


笔者在运营工作中常写日报,但由于懒得打字写文案,会把描述性统计工作交由 AI 写好后再在它的基础上修改,工作提效。
以下是我向 AI 提供数据的几种方法,分为两类表格场景。

1. 复杂表

如下所示,含有合并单元格或复杂层级结构的表格,直接复制粘贴会丢失层级结构,AI 无法理解。

TurnoverPlatform Fee
Amount305417801207417.14
Rate %3.95%
ProfitAccrualsRevenueCost of product placement in the showcaseAcceptance and transfer of the customer's payment
Amount29334362.86 1207417.1430541780.00799180.53408236.61
Rate %96.05%3.95%2.62%1.34%

我编写了将表格转 HTML 代码并压缩精简的 VBA 宏,通过 rowspan(跨行)和 colspan(跨列)属性描述多维表的复杂结构,帮助 AI 准确理解表头层级和数据单元格之间的关系,同时通过代码量精简到最低以降低 tokens 消耗。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
Sub ExcelToMinimalHTML()
Dim rng As Range
Dim htmlStr As String
Dim fso As Object
Dim ts As Object
Dim tempFile As String
Dim re As Object

If TypeName(Selection) <> "Range" Then
MsgBox "Please select a range to convert!", vbExclamation
Exit Sub
End If

Set rng = Selection
tempFile = Environ("TEMP") & "\temp_excel_" & Format(Now, "yyyymmddhhmmss") & ".html"

With ActiveWorkbook.PublishObjects.Add( _
SourceType:=xlSourceRange, _
Filename:=tempFile, _
Sheet:=rng.Worksheet.Name, _
Source:=rng.Address, _
HtmlType:=xlHtmlStatic)
.Publish True
End With

Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.OpenTextFile(tempFile, 1, False, -2)
htmlStr = ts.ReadAll
ts.Close
fso.DeleteFile tempFile

Set re = CreateObject("VBScript.RegExp")
re.Global = True
re.IgnoreCase = True

re.Pattern = "<!\[if\s+supportMisalignedColumns\]>[\s\S]*?<!\[endif\]>"
htmlStr = re.Replace(htmlStr, "")

re.Pattern = "<head\b[^>]*>[\s\S]*?</head>"
htmlStr = re.Replace(htmlStr, "")

re.Pattern = "<!--[\s\S]*?-->"
htmlStr = re.Replace(htmlStr, "")

re.Pattern = "<span\b[^>]*>\s*&nbsp;\s*</span>"
htmlStr = re.Replace(htmlStr, "")

re.Pattern = ">\s+<"
htmlStr = re.Replace(htmlStr, "><")

re.Pattern = "\s+(?!(rowspan|colspan)\b)[A-Za-z0-9\-:]+=(?:""[^""]*""|'[^']*'|[^>\s]+)"
htmlStr = re.Replace(htmlStr, "")

re.Pattern = " "
htmlStr = re.Replace(htmlStr, "")

re.Pattern = "\s{2,}"
htmlStr = re.Replace(htmlStr, " ")

htmlStr = Trim(htmlStr)

With CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
.SetText htmlStr
.PutInClipboard
End With

End Sub

Github: Excel-to-Minimal-HTML
Quicker 动作:选区转HTML

2. 简单表

如下所示,没有合并单元格或复杂层级结构的表格归类为简单表。

SKU Price Sales Revenue
1041221214 113154 147 17478490
302609093 89999 193 17426607

2.1 直接粘贴

需分析的数据量及列数较少时,可直接在 Excel/WPS 中复制表格区域后,以纯文本形式粘贴(Ctrl+Shift+V)到 AI 对话框中。
此方法会降低 AI 回复准确性,AI 需根据纯文本中的制表符猜测表结构,容易误解。

2.2 转 Markdown 表格

将待分析表格转换为结构清晰的 Markdown 表格后提供给 AI 分析,不存在错误理解数据问题。

转 Markdown 表可使用:

2.3 上传.csv文件

适合数据量超过对话框容纳上限,只能上传附件时使用。
如果原始数据为.xls.xlsx文件,需手动另存为.csv格式。