Gox語言自動(dòng)轉(zhuǎn)換Excel文件為CSV格式-GX35.2

本文繼續(xù)介紹Gox語言中如何利用內(nèi)置的github.com/360EntSecGroup-Skylar/excelize包來實(shí)現(xiàn)Excel文件的操作,例子中演示的是如何將Excel文件自動(dòng)轉(zhuǎn)換為CSV格式的文件谜慌。CSV文件其實(shí)是一種固定格式的純文本文件脑题,比較方便一般的計(jì)算機(jī)程序化處理面粮。例子代碼可以對含有單表或者多表的Excel文件進(jìn)行轉(zhuǎn)換,多表的情況下會將各個(gè)表分別保存為按數(shù)字排序的多個(gè)CSV文件,這比在Excel文件中手動(dòng)另存為CSV文件時(shí)要方便得多。另外文兑,稍加改進(jìn)后,還可以批量進(jìn)行Excel文件的轉(zhuǎn)換腺劣。

下面就是這段代碼绿贞,非常簡單,也有詳盡的注釋橘原。

// 設(shè)置github.com/360EntSecGroup-Skylar/excelize包的簡稱
excel = github_360EntSecGroupSkylar_excelize

// 從命令行獲取要轉(zhuǎn)換的Excel文件名
fileNameT = getParameter(argsG, 1, "")

if fileNameT == "" {
    pl("not enough parameters")
    exit()
}

// 打開該Excel文件
f, errT = excel.OpenFile(fileNameT)
checkError(errT)

// 獲取文件內(nèi)所有的表(sheet)
// 結(jié)果是一個(gè)[]string字符串?dāng)?shù)組籍铁,里面是各個(gè)表的名稱
sheets = f.GetSheetList()

// 獲取表的個(gè)數(shù)
lenT = len(sheets)

// 如果只有一個(gè)表,則轉(zhuǎn)換為原文件名+“.csv”的新文件名
if lenT <= 1 {
    // 獲取第一個(gè)表中所有的內(nèi)容(行列)
    rowsT, errT = f.GetRows(sheets[0])
    checkError(errT)

    // 獲取第一個(gè)表中所有的內(nèi)容(行列)
    of, err = os.Create(fileNameT+".csv")
    checkError(err)

    // 確保關(guān)閉輸出文件
    defer of.Close()

    // 用Go語言encoding/csv標(biāo)準(zhǔn)包新建csv的writer
    w = encoding_csv.NewWriter(of)

    // 寫入所有行
    w.WriteAll(rowsT)

    // 檢查是否有錯(cuò)誤
    errT = w.Error()

    // 有錯(cuò)誤的話輸出錯(cuò)誤信息并終止程序運(yùn)行
    checkErrf("failed to write output csv file: %v", errT)
    
} else { // 否則轉(zhuǎn)換為帶數(shù)字序號的幾個(gè)csv文件趾断,每個(gè)文件對應(yīng)一個(gè)Excel文件中的表

    // saveCSV函數(shù)用于將Excel文件中序號為idxA的表存入csv文件
    // 寫入csv的方法與上面的基本一致
    func saveCSV(idxA) {
        rowsT, errT = f.GetRows(sheets[idxA])
        checkError(errT)
    
        of, err = os.Create(sprintf("%v_%d.csv", fileNameT, idxA+1))
        checkError(err)
    
        defer of.Close()
        
        w = encoding_csv.NewWriter(of)
    
        w.WriteAll(rowsT)
    
        errT = w.Error()
    
        checkErrf("failed to write output csv file: %v", errT)
    }
    
    // 循環(huán)將所有表都轉(zhuǎn)換成csv文件
    for i, _ = range sheets {
        saveCSV(i)
    }

}

注意:

  • Gox語言是脫胎于Go語言(Golang)的開源腳本語言拒名,解釋執(zhí)行,但相比Go語言更貼近高級語言芋酌,語法硬性限制也少一些增显;是一門偏向快速應(yīng)用的語言,也可以說是一個(gè)集成工具脐帝;

  • Gox語言主要優(yōu)勢有三點(diǎn):

    • 第一同云,Gox語言本身只有一個(gè)可執(zhí)行文件,綠色免配置腮恩,下載即可使用,無需安裝Go語言環(huán)境温兼,無需編譯秸滴,非常適合快速制作原型以及云服務(wù)器上的遠(yuǎn)程開發(fā);
    • 第二募判,Gox中可以直接使用絕大多數(shù)Go語言標(biāo)準(zhǔn)庫中的對象和方法函數(shù)荡含,也內(nèi)置了很多常用、優(yōu)秀的第三方庫届垫,充分發(fā)揮Go語言多年積累的資源優(yōu)勢释液;
    • 第三,與很多其他主流語言不同装处,Gox語言著力解決了GUI圖形界面編程的問題误债,內(nèi)置了基于Giu(imgui)浸船、LCL、Sciter的三套圖形界面編程庫寝蹈,直接可以進(jìn)行快捷高效的圖形界面開發(fā)(LCL李命、Sciter只需分別下載一個(gè)動(dòng)態(tài)鏈接庫文件,執(zhí)行和分發(fā)時(shí)附帶上即可)箫老,特別適合編寫演示原型系統(tǒng)封字。

作為腳本語言,Gox語言性能肯定不如Go語言這樣的編譯型語言快耍鬓,但由于Gox語言與Go語言的緊密聯(lián)系阔籽,Gox語言編寫的腳本可以很容易的改寫成Go語言代碼,編譯執(zhí)行后就可以發(fā)揮Go語言的速度優(yōu)勢了牲蜀。因此笆制,Gox語言也比較適合做初期的Go語言調(diào)試,還有一個(gè)更直接的方式是使用Gotx(在Gox官網(wǎng)上也有下載)各薇,這是使用完全和Go語言一樣語法的解釋器项贺,可以理解成集成了Go語言標(biāo)準(zhǔn)庫和不少第三方庫的解釋執(zhí)行的Go語言,一樣也不需要搭建Go語言環(huán)境峭判。Gotx與Gox的區(qū)別在于开缎,Gotx仍然遵循Go語言的文法,代碼相對復(fù)雜一些林螃,限制也多一些奕删,但改寫回Go語言準(zhǔn)備編譯執(zhí)行時(shí),基本上沒有成本疗认。

Gox的官網(wǎng)在這里完残,也可以在瀏覽器搜索引擎中直接搜索“gox語言”,Github頁面在這里横漏,在這里可以看到很多Gox語言的學(xué)習(xí)指南和實(shí)際應(yīng)用實(shí)例谨设。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市缎浇,隨后出現(xiàn)的幾起案子扎拣,更是在濱河造成了極大的恐慌,老刑警劉巖素跺,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件二蓝,死亡現(xiàn)場離奇詭異,居然都是意外死亡指厌,警方通過查閱死者的電腦和手機(jī)刊愚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來踩验,“玉大人鸥诽,你說我怎么就攤上這事商玫。” “怎么了衙传?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵决帖,是天一觀的道長。 經(jīng)常有香客問我蓖捶,道長地回,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任俊鱼,我火速辦了婚禮刻像,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘并闲。我一直安慰自己细睡,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布帝火。 她就那樣靜靜地躺著溜徙,像睡著了一般。 火紅的嫁衣襯著肌膚如雪犀填。 梳的紋絲不亂的頭發(fā)上蠢壹,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天,我揣著相機(jī)與錄音九巡,去河邊找鬼图贸。 笑死,一個(gè)胖子當(dāng)著我的面吹牛冕广,可吹牛的內(nèi)容都是我干的疏日。 我是一名探鬼主播,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼撒汉,長吁一口氣:“原來是場噩夢啊……” “哼沟优!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起睬辐,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤挠阁,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后溉委,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鹃唯,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡爱榕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年瓣喊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片黔酥。...
    茶點(diǎn)故事閱讀 39,722評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡藻三,死狀恐怖洪橘,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情棵帽,我是刑警寧澤熄求,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站逗概,受9級特大地震影響弟晚,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜逾苫,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一卿城、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧铅搓,春花似錦瑟押、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至氢烘,卻和暖如春怀偷,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背威始。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工枢纠, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人黎棠。 一個(gè)月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓晋渺,卻偏偏與公主長得像,于是被迫代替她去往敵國和親脓斩。 傳聞我的和親對象是個(gè)殘疾皇子木西,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評論 2 353