php用wordanalysis抓取姓名_利用vba查询/抓取 外部数据
考慮這么一個(gè)excel文件,路徑為:"E:dataEdata.xlsx",樣式如封面圖片所示
想要在其他excel文件中,通過(guò)代碼直接抓取Edata.xlsx中想要的數(shù)據(jù),做法如下:
- 先在Visual Basic中勾選“工具-引用-Microsoft ActiveX Data Objects”
- 然后在下面的殼子中寫入代碼
注意!!!以下代碼都要放在這個(gè)殼子中才能生效
單個(gè)表全部抓取
Range("a2").CopyFromRecordset conn.Execute("select * from [data1$]") 這段代碼的前半段是指 【將數(shù)據(jù)抓取到當(dāng)前的單元格】中核心是后半段,conn.Execute() 是必要的函數(shù),先不管它
select * from [data$]:* 表示將sheet:data中的所有數(shù)據(jù)(除表頭)抓取出來(lái);$跟在sheet名后面,作為excel表的標(biāo)記
為了看起來(lái)簡(jiǎn)潔,可以這樣定義:
Dim sql As String sql = "select * from [data1$]" Range("a2").CopyFromRecordset conn.Execute(sql)只抓取某幾行
如果只想獲得部分?jǐn)?shù)據(jù),比如 姓名/性別 兩列,代碼寫為:
sql = "select 姓名,性別 from [data1$]" Range("a2").CopyFromRecordset conn.Execute(sql)很樸素的語(yǔ)言邏輯
有條件的抓取
sql = "select * from [data1$] where 性別 = '男' " Range("a2").CopyFromRecordset conn.Execute(sql)合并抓取多個(gè)表
我們注意到表data1和data2是同一種格式的表格,如果同時(shí)想要兩個(gè)表的內(nèi)容呢?如何把他們同時(shí)抓取并放到一起呢?
sql = "select * from [data1$] union all select * from [data2$]" Range("a2").CopyFromRecordset conn.Execute(sql) union all 可以把兩個(gè)表上下連接起來(lái)類VLOOKUP查找
可以注意到data3中有前兩表沒(méi)有的【月薪】一列,他們之間可以靠【姓名】對(duì)應(yīng)起來(lái)。那么可不可以像Excel中的VLOOKUP函數(shù)一樣,通過(guò)姓名把他們的月薪查找出來(lái)呢?
sql = "select * from [data1$] left join [data3$] on [data1$].姓名 = [data3$].姓名" Range("a2").CopyFromRecordset conn.Execute(sql)left join on 函數(shù)結(jié)果會(huì)變成這個(gè)樣子,多出現(xiàn)了一列姓名:
這就反應(yīng)出了left join on 的特點(diǎn),它是先把后面的兩個(gè)表合并,然后對(duì)合并后的表做select。下圖中黃色部分的格式就是上圖中的樣子。
如果想更好的顯示,就要對(duì)代碼進(jìn)行修改:
sql = "select [data1$].姓名,性別,年齡,月薪 from [data1$] left join [data3$] on [data1$].姓名 = [data3$].姓名" Range("a2").CopyFromRecordset conn.Execute(sql)把三個(gè)表結(jié)合到一起
先UNION ALL 再 LEFT JOIN ON
sql = "select a.姓名,性別,年齡,月薪 from (select * from [data1$] union all select * from [data2$])a left join [data3$] on a.姓名=[data3$].姓名" Range("a2").CopyFromRecordset conn.Execute(sql)這段代碼很長(zhǎng),讓我們來(lái)捋一捋:
首先是將data1和data2(通過(guò)union all 方法) 合并成一個(gè)表,用a表示然后將表a和data3(通過(guò)left join on方法)合并成一個(gè)表,根據(jù)姓名加入對(duì)應(yīng)的月薪
對(duì)最終合并成的表提取 姓名,性別,年齡,月薪 這4列數(shù)據(jù)
代碼的邏輯如上圖所示,黃色表示【data1】和【data2】union all之后的【表a】,黃色加藍(lán)色就是【表a】和【data3】left join on后的表,select函數(shù)直接作用在這個(gè)表上。
得到結(jié)果為:
總結(jié)
以上是生活随笔為你收集整理的php用wordanalysis抓取姓名_利用vba查询/抓取 外部数据的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: android 创建文件夹_Androi
- 下一篇: mapreduce原理_Hbase Bu