成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

10行代碼提取復雜Excel數(shù)據(jù)-創(chuàng)新互聯(lián)

把 Excel 文件導入關系數(shù)據(jù)庫是數(shù)據(jù)分析業(yè)務中經(jīng)常要做的事情,但許多 Excel 文件的格式并不規(guī)整,需要事先將其中的數(shù)據(jù)結構化后再用 SQL 語句寫入數(shù)據(jù)庫。而一般情況下,結構化的工作量會比較大,而且很難通用,每次都要針對文件格式進行分析后再進行開發(fā)。
集算器的 SPL 語言是一款高效、靈活的工具,它能夠輕松讀取 excel 數(shù)據(jù),然后結構化成“序表”后導入數(shù)據(jù)庫。使用 SPL 語言后,以往需要編寫數(shù)千行代碼才能完成的 Excel 數(shù)據(jù)結構化入庫工作,現(xiàn)在只需要不到 10 行代碼就可以勝任,簡單情況下甚至只需要 2、3 行代碼!真的這么神奇嗎?下面就來看看神奇之處吧

在六合等地區(qū),都構建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務理念,為客戶提供做網(wǎng)站、成都網(wǎng)站建設 網(wǎng)站設計制作按需規(guī)劃網(wǎng)站,公司網(wǎng)站建設,企業(yè)網(wǎng)站建設,成都品牌網(wǎng)站建設,營銷型網(wǎng)站建設,外貿(mào)網(wǎng)站建設,六合網(wǎng)站建設費用合理。

10行代碼提取復雜Excel數(shù)據(jù)

下面我們將分情況討論如何利用集算器將Excel數(shù)據(jù)進行結構化。文中用到的函數(shù)請參看集算器文檔《函數(shù)參考》。

1.  普通行式

先看最簡單的情況:如下圖所示,Excel文件中第一行是列標題,從第二行開始,每行是一條數(shù)據(jù)記錄。

10 行代碼提取復雜 Excel 數(shù)據(jù)

集算器處理這種文件也非常簡單:


A

1

=file( "學生成績表.xlsx"  ).xlsimport@t()

2

=connect("demo")

3

=A2.update(A1,xscj)

A1 打開“學生成績表.xlsx”文件并導入成序表,選項@t表示文件第一行是列標題

A2 連接demo數(shù)據(jù)庫

A3 將A1中的序表存入到demo數(shù)據(jù)庫的xscj表中,由于表中的列名和序表中的字段名一樣,所以只需指定數(shù)據(jù)表名即可。update函數(shù)的更詳細用法請查閱函數(shù)文檔。

A1中得到的序表如下圖所示:

10 行代碼提取復雜 Excel 數(shù)據(jù)

A2、A3兩步連接數(shù)據(jù)庫和將序表存入數(shù)據(jù)庫的方法是通用的,所以后面的例子中將不再寫這兩步,只關注于如何把Excel中的數(shù)據(jù)結構化成序表。

2.  多行表頭行式

大多數(shù)時候,Excel文件都不會象上例那么簡單,表頭往往比較復雜,有表名、項目名、頁碼、填表人、填寫日期等等。比如這個樣子:

10 行代碼提取復雜 Excel 數(shù)據(jù)

對于這種表,我們在讀取時就要跳過表頭,直接從數(shù)據(jù)行開始讀。


A

1

=file( "措施項目清單與計價表.xlsx"  ).xlsimport(;1,5)

2

=A1.rename(#1:序號,#2: 項目編碼,#3: 項目名稱,#4: 計量單位,#5: 數(shù)量,#6: 單價,#7: 合價 )

A1  打開文件并導入數(shù)據(jù)成序表,參數(shù)“1,5”表示讀第一個 sheet,從第 5 行開始讀,一直讀到文件結尾

A2  將 A1 中讀到的序表列名依次改為“序號、項目編碼、項目名稱、計量單位、數(shù)量、單價、合價”,即要存入的數(shù)據(jù)表的列名。

運行后 A2 中的序表如下:

10 行代碼提取復雜 Excel 數(shù)據(jù)

3.  自由格式

有時Excel文件的數(shù)據(jù)并不是網(wǎng)格式的規(guī)則表,而是字段名后緊跟著字段值的自由格式,如下圖的雇員信息表:

10 行代碼提取復雜 Excel 數(shù)據(jù)

每個雇員信息占據(jù)9行,依次往下排列。對這種文件,該怎么結構化呢?請看:


A

B

C

1

=create(雇員 ID, 姓名, 性別, 職位, 生日, 電話, 地址, 郵編 )

2

=file("雇員信息表.xlsx").xlsopen()

3

[C,C,F,C,C,D,C,C]

[1,2,2,3,4,5,7,8]


4

for

=A3.(~/B3(#)).(eval($[A2.xlscell(]/~/")"))


5


if len(B4(1))==0

break

6


>A1.record(B4)


7


>B3=B3.(~+9)


A1  創(chuàng)建列名為“雇員 ID, 姓名, 性別, 職位, 生日, 電話, 地址, 郵編”的空序表

A2  打開 Excel 數(shù)據(jù)文件

A3  定義雇員信息所在單元格列號序列

B3  定義雇員信息所在單元格行號序列

A4  用 for 循環(huán)讀取每個雇員信息

B4  A3.(~/B3(#))先算出當前雇員單元格編號序列, 再讀出這些單元格值組成雇員信息序列。第一次循環(huán)時為 [C1,C2,F2,C3,C4,D5,C7,C8],第二次循環(huán)時為[C10,C11,F11,C12,C13,D14,C16,C17]……每次行號加 9。$[A2.xlscell(] 與 "A2.xlscell(" 相同,都是表示一個字符串,它的好處是在 IDE 中編寫程序時,如果 A2 單元格的編號發(fā)生了變化,$[A2.xlscell(]中的 A2 會自動變化,比如在 A2 前插入了一行,這個表達式就會變成 $[A3.xlscell(],而用引號的話,就不會自動變了。

B5   判斷雇員 ID 值是否為空,為空則退出循環(huán),結束運行

B6   將一條雇員信息存入 A1 序表尾

B7  讓雇員信息的行號序列都加上 9,讀取下一條雇員信息

運行后得到的 A1 序表如下:

10 行代碼提取復雜 Excel 數(shù)據(jù)

4.  交叉表

Excel中還有交叉表格式的數(shù)據(jù),如下圖:

10 行代碼提取復雜 Excel 數(shù)據(jù)

數(shù)據(jù)結構化程序如下:


A

1

=file("交叉表.xlsx").xlsimport@t(;1,2)

2

=A1.rename(#1:運貨商)

3

=A2.pivot@r(運貨商;貨主地區(qū),訂單數(shù)量)

A1  打開文件并導入數(shù)據(jù)成序表,參數(shù)“1,2”表示讀第一個 sheet,從第 2 行開始讀,一直讀到文件結尾。選項 @t 表示開始行是列標題。

A2  由于第二行第一個單元格是圖片,讀的數(shù)據(jù)為 null,第一列沒有列標題,所以將第一列列名改為運貨商。

A3  以運貨商為分組,對序表數(shù)據(jù)進行行列轉換,選項 @r 表示將列數(shù)據(jù)轉換為行數(shù)據(jù),轉換后新的列名分別為“貨主地區(qū)”、“訂單數(shù)量”。

運行后得到的 A3 序表如下:

10 行代碼提取復雜 Excel 數(shù)據(jù)

5.  主子表

在下圖所示的員工信息登記表中,除了有員工本人的信息外,還有他的家庭成員信息。每個 sheet 保存一個員工的相關信息,所以有多少員工,就有多少個 sheet。

10 行代碼提取復雜 Excel 數(shù)據(jù)

對這種主子表結構的數(shù)據(jù),需要創(chuàng)建兩個序表分別保存主表和子表的數(shù)據(jù),集算器程序如下:


A

B

C

1

=create(×××號,姓名,性別,出生日期,民族,手機號,部門,家庭地址,婚姻狀況,入職時間)

2

=create(×××號,姓名,關系,工作單位,聯(lián)系電話)

3

[B4,B3,D3,F3,H3,F4,H4,B5,F5,H5]

4

=file("員工信息表.xlsx").xlsopen()

5

for A4



6


=A3.(eval($[A4.xlscell(]/~/",\""/A5.頁名/"\")"))

>A1.record(B6)

7


=A4.xlsimport@t(家庭成員,姓名,關系,工作單位,聯(lián)系電話;A5.頁名,6)


8


=B7.rename(家庭成員:×××號)

>B8.run(×××號=B6(1))

9


>A2.insert@r(0:B8)


A1  創(chuàng)建列名為“×××號, 姓名, 性別, 出生日期, 民族, 手機號, 部門, 家庭地址, 婚姻狀況, 入職時間”的空序表,用于保存主表員工信息

A2  創(chuàng)建列名為“×××號, 姓名, 關系, 工作單位, 聯(lián)系電話”的空序表,用于保存子表員工家庭成員信息

A3  定義主表員工信息所在單元格序列

A4  打開 Excel 數(shù)據(jù)文件

A5  循環(huán)讀取 Excel 文件各 sheet 數(shù)據(jù)

B6  讀取員工信息序列

C6  將 B6 讀取的員工信息保存到序表 A1

B7  從第 6 行開始讀取員工家庭成員信息,只讀指定的“家庭成員, 姓名, 關系, 工作單位, 聯(lián)系電話”5 列

B8  將 B7 序表的家庭成員列改名為×××號

C8  為 B8 序表的×××號列賦值為員工信息中的×××號

B9   將 B8 中的員工家庭成員信息保存到序表 A2

程序運行后,序表 A1 如下圖所示:

10 行代碼提取復雜 Excel 數(shù)據(jù)

序表 A2 如下圖所示:

10 行代碼提取復雜 Excel 數(shù)據(jù)


上面這些情況基本羅列了常見的 Excel 數(shù)據(jù)格式,如果遇到更復雜的文件,也可以靈活使用例子中的技巧予以應對。簡單總結一下,集算器提供了非常靈活的在 excel 文件中定位和讀取數(shù)據(jù)的功能,既可以成片讀取網(wǎng)格數(shù)據(jù),也可以精確定位單元格進行讀取。再結合特有的“序表”對象,以往需要編寫數(shù)千行代碼才能完成的 Excel 數(shù)據(jù)結構化入庫工作,現(xiàn)在只需要不到 10 行代碼就可以勝任,簡單情況下甚至只需要 2、3 行代碼!

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

本文標題:10行代碼提取復雜Excel數(shù)據(jù)-創(chuàng)新互聯(lián)
文章出自:http://jinyejixie.com/article38/dhdipp.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設計ChatGPT、服務器托管、全網(wǎng)營銷推廣、靜態(tài)網(wǎng)站、軟件開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

綿陽服務器托管
登封市| 马龙县| 涟水县| 屏东县| 大埔区| 民乐县| 循化| 碌曲县| 墨脱县| 天等县| 林甸县| 东丽区| 嘉黎县| 夏邑县| 巴楚县| 浦城县| 洱源县| 无为县| 上林县| 抚宁县| 利川市| 册亨县| 林西县| 舟山市| 上蔡县| 南溪县| 房产| 东乌珠穆沁旗| 邢台市| 阜阳市| 平原县| 安阳市| 泸溪县| 金乡县| 平顶山市| 雷山县| 靖西县| 东明县| 汶上县| 南和县| 汉中市|