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

本章节为“Python Flask显示公司疫情情况”的四篇连载的第一篇,使用Pycharm社区版做开发环境。

一,在pycharm社区版中创建flask开发项目
1,Pycharm的专业版集成了Web开发环境,但社区版也是一样可以的,首先创建“flaskweb”python常规项目。然后在“setting”中点击右侧的“+”号,添加所需要的库(以添加flask为例:)

flask.PNG

2,添加该项目需要的其他库,见下图:


flaskweb.PNG

3,在“flaskweb”的项目结构视图下,创建data、sqlite、excel、json、static、templates文件夹。data用来存放excel、json等数据,sqlite存放操作数据库的py文件,excel和json文件夹用来存放操作Excel、JSON文件的py文件,static存放flask网页需要的js和css等静态文件,templates存放flask的jinjia2模板页面。


pycharm.PNG

二,在excel文件夹中创建用来解析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
        # 获取当前.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  # 获取总行数
        self.cols = self.table.ncols  # 获取总列数

    def data_dict(self):
        if self.rows <= 1:
            print("Excel无数据,路径:", end='')
            print(self.excel_path)
            return False
        else:
            # 将列表的第一行设置为字典的key值
            keys = self.table.row_values(0)
            # 定义一个数组
            data = []
            # Excel表头占了两行,所以从第3行开始读取数据,循环rows(总行数)-1次
            for i in range(2, self.rows):
                # 循环内定义一个字典,每次循环都会清空
                dict = {}
                # 从第一列开始读取数据,循环cols(总列数)次
                for j in range(0, self.cols):
                    # 将value值关联同一列的key值
                    dict[keys[j]] = str(self.table.row_values(i)[j])
                # 将关联后的字典放到数组里
                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)
        # 去除特殊字符,只保留汉子,字母、数字
        # 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)

三,如何调用excel文件夹下的py文件
1,在read_data.py文件中,可以在该文件中执行main方法:

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

2,如果要在read_data.py外也有多种方法可以调用API,但推荐使用类导入的方式,即通过from ... import 导入python文件中定义的类。

from excel.read_data import ExcelReader

xls_reader = ExcelReader('soft2.18.xlsx','2月18日')
data = xls_reader.data_dict()
print(data)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,616评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,020评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,078评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,040评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,154评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,265评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,298评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,072评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,491评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,795评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,970评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,654评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,272评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,985评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,223评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,815评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,852评论 2 351

推荐阅读更多精彩内容

  • Django 准备 “虚拟环境为什么需要虚拟环境:到目前位置,我们所有的第三方包安装都是直接通过 pip inst...
    33jubi阅读 1,319评论 0 5
  • python学习笔记 声明:学习笔记主要是根据廖雪峰官方网站python学习学习的,另外根据自己平时的积累进行修正...
    renyangfar阅读 3,031评论 0 10
  • 1.1 虚拟环境 1.1.1 为什么需要虚拟环境 学习Flask之前,我们所有的第三方包安装都是直接通过pip i...
    成长之路丶阅读 641评论 0 5
  • 立夏之后, 夏季第二, 节气小满。 夏熟作物籽, 开始灌浆。 还未成熟, 只是小满。 5 月20日, 到22日间,...
    解龙阅读 200评论 1 3
  • 「简书」作为一款「写作软件」在诞生之初就支持了 Markdown,Markdown 是一种「电子邮件」风格的「标记...
    Mystere阅读 183评论 0 0