原创:

qq:231469242

import xlrd
import pandas,numpy
import matplotlib.pyplot as plt
import pandas as pd
 
#参数
#报告时间
reportdate="2016/12/22"
#省份
admin="江西"
fileName="江西2016年第4期药品质量公告不符合规定药品汇总(假冒).xls"
year="2016年"
#文件名
file="江西2016年第4期药品质量公告不符合规定药品汇总"
url="http://www.jxda.gov.cn/ZWGK/ZWTG/ZLGG/2016/12/14761230.html"
#假冒设置为空值
fake=""
 
data = xlrd.open_workbook(fileName)
 
table = data.sheets()[0]
 
#获取行数和列数
nrows = table.nrows
ncols = table.ncols
 
 
#把excel数据转换为列为元素的列表
list_columns=[]
 
#A类,存储标签包含的关键字
#存储药品名称相关中文
list_title_names=['药品名称','检品名称','药品品名','品名','样品名称','标示药品名称']
#存储标示生产企业相关中文
list_title_manufacturers=['标示生产单位','标示生产企业','样品标示生产单位','标示生产企业名称']
#存储药标示批号相关中文
list_title_pitchnos=['标示批号','批号','生产批号','批件号','产品批号']
#存储药标示批号相关中文
list_title_specifications=['标示规格','规格','药品规格']
#存储不合格项目相关中文
list_title_unpasseditems=['不符合项目','不合格项目','不符合规定项目']
#存储有效期相关中文
list_title_validperiods=['有效期至']
#存储来源相关中文
list_title_sources=['检品来源','来源','供样单位','申报单位','被抽样单位','被抽验单位','被抽样单位名称']
#存储检验单位相关中文
list_title_testoffices=['检验单位','检验机构']
#存储检验物质相关中文
list_title_testobjectives=['检验物质']
#存储检验依据相关中文
list_title_regulations=['检验依据']
#存储备注相关中文
list_title_notices=['备注']
 
 
#B类,存储列信息
list_name=[]
list_manufacturer=[]
list_pichno=[]
list_specification=[]
list_unpasseditem=[]
list_validperiod=[]
list_reportdate=[]
list_source=[]
list_testoffice=[]
list_testobjective=[]
list_regulation=[]
list_year=[]
list_file=[]
list_url=[]
list_notice=[]
list_fake=[]
 
#把excel数据转换为列为元素的列表 函数
def List_columns(table,ncols):
    for i in range(ncols):
        list1=table.col_values(i)
        list_columns.append(list1)
    return list_columns
     
 
 
#获取list_columnInformation数据
#list_columns是把excel数据转换为列为元素的列表
#list_title存储列标签信息,例如list_title_unpasseditems
#list_columnInformation表示搜索到的相关列信息,例如list_names
def List_columnInformation(list_columns,list_title_names,list_columnInformation):
    for i in range(len(list_columns)):
        #获取列数据
        list_column=list_columns[i]
        #title表示标题,例如产品名字
        title=list_column[0]
        #字段名去除空格
        title1=title.replace(" ","")
        #print("title:",title)
        if title1 in list_title_names:
            #print("find title")
            list_columnInformation=list_column[1:]
            return list_columnInformation
        else:
            list_columnInformation=['']*(nrows-1)
    return list_columnInformation
 
        
     
     
#用于获取报告时间,网址,文件名等列信息   
def List_repeat_columnInformation(nrows,value):
    list_repeat_columnInformation=[value]*(nrows-1)
 
    return list_repeat_columnInformation
     
#获取各列数据
list_columns=List_columns(table,ncols)
list_name=List_columnInformation(list_columns,list_title_names,list_name)
list_manufacturer=List_columnInformation(list_columns,list_title_manufacturers,list_manufacturer)
list_pichno=List_columnInformation(list_columns,list_title_pitchnos,list_pichno)
list_specification=List_columnInformation(list_columns,list_title_specifications,list_specification)
list_unpasseditem=List_columnInformation(list_columns,list_title_unpasseditems,list_unpasseditem)
list_validperiod=List_columnInformation(list_columns,list_title_validperiods,list_validperiod)
list_reportdate=List_repeat_columnInformation(nrows,reportdate)
list_source=List_columnInformation(list_columns,list_title_sources,list_source)
list_testoffice=List_columnInformation(list_columns,list_title_testoffices,list_testoffice)
list_testobjective=List_columnInformation(list_columns,list_title_testobjectives,list_testobjective)
list_regulation=List_columnInformation(list_columns,list_title_regulations,list_regulation)
list_adminadd=List_repeat_columnInformation(nrows,admin)
list_year=List_repeat_columnInformation(nrows,year)
list_file=List_repeat_columnInformation(nrows,file)
list_url=List_repeat_columnInformation(nrows,url)
list_notice=List_columnInformation(list_columns,list_title_notices,list_notice)
list_fake=List_repeat_columnInformation(nrows,'')
 
#pandas字典写入excel会有标题排序问题,所以用a,b,c等顺序字母代替
data=pd.DataFrame({'a':list_name,'b':list_manufacturer,
                   'c':list_pichno,'d':list_specification,
                   'e':list_unpasseditem,'f':list_validperiod,
                   'g':list_reportdate,'h':list_source,
                   'i':list_testoffice,
                   'j':list_testobjective,
                   'k':list_regulation,'l':list_adminadd,
                   'm':list_year,'n':list_file,'o':list_url,
                   'p':list_notice,'q':list_fake})
                    
                    
data.to_excel("ypzl_normal.xlsx")

ypzl药品质量不合格数据库-excel自动排版的更多相关文章

  1. 大手册(书籍)排版利器-XML自动排版生成工具

    --支持全球化/多语言/符合W3C标准的XML自动排版工具 Boxth XML/XSL Formatter是专为XML数据或其他结构化数据源自动输出排版文件(如: PDF等)而设计的集数据格式化.版式 ...

  2. 自动排版工具——XML自动排版生成工具

    ——支持全球化/多语言/符合W3C标准的XML自动排版工具 Boxth XML/XSL Formatter是专为XML数据或其他结构化数据源自动输出排版文件(如: PDF等)而设计的集数据格式化.版式 ...

  3. SQL Server数据库定时自动备份

    SQL Server 数据库定时自动备份[转]   在SQL Server中出于数据安全的考虑,所以需要定期的备份数据库.而备份数据库一般又是在凌晨时间基本没有数据库操作的时候进行,所以我们不可能要求 ...

  4. eclipse自动排版JSP问题

    eclipse自动排版JSP非常难看,标签每行显示不完整,开发时很难受,下面设置一下这个就好多了: window-->preferences-->Web-->HTML Files-- ...

  5. eclipse 自动排版

    自动排版:  ctrl + i 同名变量高亮: shift+alt+ o 导包:  shift+ctrl +o

  6. Hibernate连接mysql数据库并自动创建表

    天才第一步,雀氏纸尿裤,Hibernate第一步,连接数据库. Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个 ...

  7. Windows环境下Oracle数据库的自动备份脚本

    批处理文件(.bat) @echo off echo ================================================ echo  Windows环境下Oracle数据 ...

  8. myeclipse自动排版

    myeclipse代码排版方式有两种: 1. ctr+f 实现自动排版: 2. myeclipse->Preference->Java->Editor->Sava Action ...

  9. 使用SQL Server维护计划实现数据库定时自动备份

    在SQL Server中出于数据安全的考虑,所以需要定期的备份数据库.而备份数据库一般又是在凌晨时间基本没有数据库操作的时候进行,所以我们不可能要求管理员每天守到晚上1点去备份数据库.要实现数据库的定 ...

随机推荐

  1. 搭建自己的PHP框架心得(二)

    h2:first-child, body>h1:first-child, body>h1:first-child+h2, body>h3:first-child, body>h ...

  2. 穿越之旅之--android中如何执行java命令

    android的程序基于java开发,当我们接上调试器,执行adb shell,就可以执行linux命令,但是却并不能执行java命令. 那么在android的shell中是否就不能执行java程序了 ...

  3. Start Instance 操作详解 - 每天5分钟玩转 OpenStack(31)

    本节通过日志文件详细分析 instance start 操作. 下面是 start instance 的流程图 向 nova-api 发送请求 nova-api 发送消息 nova-compute 执 ...

  4. Keystone 命令汇总

    Keystone 命令汇总   目录 [隐藏] 1 用户(User) 1.1 查看用户列表 1.2 创建用户 1.3 删除用户 1.4 显示用户详细信息 1.5 更新用户的密码 1.6 赋予用户一个角 ...

  5. Java 对象初始化

      对象A的创建过程: 1. 构造器实际上是静态方法.当首次创建对象A 或者 A类的静态方法/静态域首次被访问时,Java解释器查找类路径,以定位     A.class文件.(当程序创建第一个对类的 ...

  6. shell parameter expansitions

    type testtype -a test math calculate:echo $((1+2*3)) parameter expansition:bash-4 introduced feature ...

  7. 使用VNET-to-VNET连接Microsoft Azure国际版和中国版

    Microsoft Azure的VNET-to-VNET功能可以实现跨虚拟网络的VPN连接,通过VNET-to-VNET互联的两个虚拟网络可以在同一个订阅下或者隶属不同的订阅,而且可以跨数据中心.这实 ...

  8. JavaScript 基础回顾——函数

    在JavaScript中,函数也是一种数据类型,属于 function 类型,所以使用Function关键字标识函数名.函数可以在大括号内编写代码并且被调用,作为其他函数的参数或者对象的属性值. 1. ...

  9. Android USB Gadget复合设备驱动(打印机)测试方法

    启动Android打印机设备,并用USB线连接电脑主机及Android打印机. Android打印机系统启动完成后,在Windows设备管理器中,可以看到Android Phone设备和USB打印支持 ...

  10. Jenkins学习三:介绍一些Jenkins的常用功能

    Jenkins其实就是一个工具,这个工具的作用就是调用各种其他的工具来达成你的目的. 1.备份.迁移.恢复jenkins 首先找到JENKINS_HOME,因为Jenkins的所有的数据都是以文件的形 ...