(一)利用xlrd解析員工疫情Excel

本章節(jié)為“Python Flask顯示公司疫情情況”的四篇連載的第一篇,使用Pycharm社區(qū)版做開發(fā)環(huán)境埃篓。

一抵卫,在pycharm社區(qū)版中創(chuàng)建flask開發(fā)項目
1掠手,Pycharm的專業(yè)版集成了Web開發(fā)環(huán)境柳恐,但社區(qū)版也是一樣可以的伐脖,首先創(chuàng)建“flaskweb”python常規(guī)項目。然后在“setting”中點擊右側(cè)的“+”號乐设,添加所需要的庫(以添加flask為例:)

flask.PNG

2讼庇,添加該項目需要的其他庫,見下圖:


flaskweb.PNG

3伤提,在“flaskweb”的項目結(jié)構(gòu)視圖下巫俺,創(chuàng)建data、sqlite肿男、excel介汹、json、static舶沛、templates文件夾嘹承。data用來存放excel、json等數(shù)據(jù)如庭,sqlite存放操作數(shù)據(jù)庫的py文件叹卷,excel和json文件夾用來存放操作Excel、JSON文件的py文件坪它,static存放flask網(wǎng)頁需要的js和css等靜態(tài)文件骤竹,templates存放flask的jinjia2模板頁面。


pycharm.PNG

二往毡,在excel文件夾中創(chuàng)建用來解析Excel文件的read_data.py蒙揣。
Excel模板-百度云盤下載: 提取碼: y9j2

為了方便其他py文件使用該解析Excel的API,定義一個ExcelReader類:

import json
import os
import re
import xlrd


class ExcelReader(object):
    def __init__(self, excel_name, sheet_name):
        self.excel_name = excel_name
        # 獲取當(dāng)前.py文件所在文件夾層
        dir_path = os.path.dirname(os.path.realpath(__file__))
        # 再次向上獲取工程的文件夾層
        project_path = os.path.dirname(dir_path)
        # 獲取excel所在文件目錄
        self.excel_path = os.path.join(project_path, "data", excel_name)
        # 打開指定的excel文件
        self.data = xlrd.open_workbook(self.excel_path)
        # 找到指定的sheet頁
        self.table = self.data.sheet_by_name(sheet_name)
        self.rows = self.table.nrows  # 獲取總行數(shù)
        self.cols = self.table.ncols  # 獲取總列數(shù)

    def data_dict(self):
        if self.rows <= 1:
            print("Excel無數(shù)據(jù)开瞭,路徑:", end='')
            print(self.excel_path)
            return False
        else:
            # 將列表的第一行設(shè)置為字典的key值
            keys = self.table.row_values(0)
            # 定義一個數(shù)組
            data = []
            # Excel表頭占了兩行懒震,所以從第3行開始讀取數(shù)據(jù),循環(huán)rows(總行數(shù))-1次
            for i in range(2, self.rows):
                # 循環(huán)內(nèi)定義一個字典嗤详,每次循環(huán)都會清空
                dict = {}
                # 從第一列開始讀取數(shù)據(jù)个扰,循環(huán)cols(總列數(shù))次
                for j in range(0, self.cols):
                    # 將value值關(guān)聯(lián)同一列的key值
                    dict[keys[j]] = str(self.table.row_values(i)[j])
                # 將關(guān)聯(lián)后的字典放到數(shù)組里
                data.append(dict)
            return data

    def data_dict_to_json(self, data):
        # 獲取生成json所在文件目錄
        file_name = self.excel_path + '.json'
        with open(file_name, 'w', encoding='utf-8') as file_object:
            json.dump(data, file_object, ensure_ascii=False)
        return file_object

    def escap_no_common_char(self, s):
        # s = '1123*#$ 中abc國'
        str = re.sub('[a-zA-Z0-9’!"#$%&\'()*+,-./:;<=>?@,葱色。?★递宅、…【】《》?“”‘’苍狰![\\]^_`{|}~\s]+', "", s)
        # 去除特殊字符恐锣,只保留漢子,字母舞痰、數(shù)字
        # sub_str = re.sub(u"([^\u4e00-\u9fa5\u0030-\u0039\u0041-\u005a\u0061-\u007a])", "", str)
        # 去除不可見字符
        # str = re.sub(
        #     '[\001\002\003\004\005\006\007\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a]+',
        #     '', str)
        print(str)


if __name__ == '__main__':
    start = ExcelReader('Example.xlsx', 'Sheet1 (2)')
    data = start.data_dict()
    start.data_dict_to_json(data)

三土榴,如何調(diào)用excel文件夾下的py文件
1,在read_data.py文件中响牛,可以在該文件中執(zhí)行main方法:

if __name__ == '__main__':
    start = ExcelReader('Example.xlsx', 'Sheet1 (2)')
    data = start.data_dict()
    start.data_dict_to_json(data)

2玷禽,如果要在read_data.py外也有多種方法可以調(diào)用API,但推薦使用類導(dǎo)入的方式呀打,即通過from ... import 導(dǎo)入python文件中定義的類矢赁。

from excel.read_data import ExcelReader

xls_reader = ExcelReader('soft2.18.xlsx','2月18日')
data = xls_reader.data_dict()
print(data)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市贬丛,隨后出現(xiàn)的幾起案子撩银,更是在濱河造成了極大的恐慌,老刑警劉巖豺憔,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件额获,死亡現(xiàn)場離奇詭異够庙,居然都是意外死亡,警方通過查閱死者的電腦和手機抄邀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門耘眨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人境肾,你說我怎么就攤上這事剔难。” “怎么了奥喻?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵偶宫,是天一觀的道長。 經(jīng)常有香客問我环鲤,道長纯趋,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任楔绞,我火速辦了婚禮结闸,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘酒朵。我一直安慰自己桦锄,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布蔫耽。 她就那樣靜靜地躺著结耀,像睡著了一般。 火紅的嫁衣襯著肌膚如雪匙铡。 梳的紋絲不亂的頭發(fā)上图甜,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天,我揣著相機與錄音鳖眼,去河邊找鬼黑毅。 笑死,一個胖子當(dāng)著我的面吹牛钦讳,可吹牛的內(nèi)容都是我干的矿瘦。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼愿卒,長吁一口氣:“原來是場噩夢啊……” “哼缚去!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起琼开,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤易结,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體搞动,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡躏精,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了滋尉。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片玉控。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡飞主,死狀恐怖狮惜,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情碌识,我是刑警寧澤碾篡,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站筏餐,受9級特大地震影響开泽,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜魁瞪,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一穆律、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧导俘,春花似錦峦耘、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至少梁,卻和暖如春洛口,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背凯沪。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工第焰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人妨马。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓挺举,卻偏偏與公主長得像,于是被迫代替她去往敵國和親身笤。 傳聞我的和親對象是個殘疾皇子豹悬,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Django 準(zhǔn)備 “虛擬環(huán)境為什么需要虛擬環(huán)境:到目前位置,我們所有的第三方包安裝都是直接通過 pip inst...
    33jubi閱讀 1,326評論 0 5
  • python學(xué)習(xí)筆記 聲明:學(xué)習(xí)筆記主要是根據(jù)廖雪峰官方網(wǎng)站python學(xué)習(xí)學(xué)習(xí)的液荸,另外根據(jù)自己平時的積累進行修正...
    renyangfar閱讀 3,044評論 0 10
  • 1.1 虛擬環(huán)境 1.1.1 為什么需要虛擬環(huán)境 學(xué)習(xí)Flask之前瞻佛,我們所有的第三方包安裝都是直接通過pip i...
    成長之路丶閱讀 645評論 0 5
  • 立夏之后, 夏季第二, 節(jié)氣小滿伤柄。 夏熟作物籽绊困, 開始灌漿。 還未成熟适刀, 只是小滿秤朗。 5 月20日, 到22日間笔喉,...
    解龍閱讀 200評論 1 3
  • 「簡書」作為一款「寫作軟件」在誕生之初就支持了 Markdown取视,Markdown 是一種「電子郵件」風(fēng)格的「標(biāo)記...
    Mystere閱讀 184評論 0 0