ypzl药品质量不合格数据库-excel自动排版

# -*- coding: utf-8 -*-
"""
Created on Wed Nov 30 11:18:16 2016

@author: Administrator
"""
import xlrd
import pandas,numpy
import matplotlib.pyplot as plt
import pandas as pd

#参数
#报告时间
reportdate="2016/12/22"
#省份
admin="浙江"
fileName="2016年第1期广西药品质量公告(总第37期)不符合.xlsx"
year="2014年1期"
#文件名
file="药品质量公告(总第5期)"
url="www.sda.gov.cn/WS01/CL0090/105223.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]
        print("title:",title)
        if title 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,
                   ‘pme_notice‘:list_notice,‘q‘:list_fake})

data.to_excel("ypzl_normal.xlsx")

时间: 2024-07-30 22:23:14

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

NPOI导出Excel - 自动适应中文宽度(帮助类下载)

前言 做了好几个Excel.Word导出,用了HTTP流导出伪Excel文件.用过Office组件(这东西在生产环境下相当麻烦,各种权限,**). 最后决定使用NPOI组件来导出,好处很多很多了,这里不多说. 这篇文章呢,主要说一下Excel导出的细节以及问题. 我在制作这个Demo的时候使用的环境: Visual Studio 2010.Office 2013 .Framework .NET 3.5 .NPOI 1.2.5(至于为什么没有选最新版 稍后说) 完成后的截图 从浏览器导出的Exce

SQL Server 数据库定时自动备份【转】

在SQL Server中出于数据安全的考虑,所以需要定期的备份数据库.而备份数据库一般又是在凌晨时间基本没有数据库操作的时候进行,所以我们不可能要求管理员每天守到晚上1点去备份数据库.要实现数据库的定时自动备份,最常用的方式就是使用SQL Server代理中的作业.启动SQL Server Agent服务,然后在其中新建作业,作业中添加1个备份步骤,类型是T-SQL脚本,然后在命令中输入如下SQL语句,该语句实现了对数据库TestDB1的完整备份,备份文件在C盘Backup文件夹中,文件名就是T

MS-SQL数据库定时自动备份

在SQL Server中出于数据安全的考虑,所以需要定期的备份数据库.而备份数据库一般又是在凌晨时间基本没有数据库操作的时候进行,所以我们不可能要求管理员每天守到晚上1点去备份数据库.要实现数据库的定时自动备份,最常用的方式就是使用SQL Server代理中的作业.启动SQL Server Agent服务,然后在其中新建作业,作业中添加1个备份步骤,类型是T-SQL脚本,然后在命令中输入如下SQL语句,该语句实现了对数据库TestDB1的完整备份,备份文件在C盘Backup文件夹中,文件名就是T

MySQL数据库的自动备份与数据库被破坏后的恢复(2)

测试自动备份正常运转与否(备份恢复的方法) 这里,以通过实际操作的过程来介绍问题出现后的恢复方法. [1] 当数据库被删除后的恢复方法 首先建立一个测试用的数据库. [[email protected] ~]# mysql -u root -p ← 用root登录到MySQL服务器 Enter password: ← 输入MySQL的root用户密码 Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL conne

MySQL数据库的自动备份与数据库被破坏后的恢复(3)

[2] 当数据库被修改后的恢复方法 数据库被修改,可能存在着多方面的原因,被入侵.以及相应程序存在Bug等等,这里不作详细介绍.这里将只介绍在数据库被修改后,如果恢复到被修改前状态的方法. 具体和上面所述的“数据库被删除后的恢复方法”相类似.这里,测试用数据库接着使用刚刚在前面用过的test.这里为了使刚刚接触数据库的朋友不至于理解混乱,我们再次登录到MySQL服务器上确认一下刚刚建立的测试用的数据库test的相关信息. [[email protected] ~]# mysql -u root

SQL Server 数据库定时自动备份

原文:SQL Server 数据库定时自动备份 SQL Server 数据库定时自动备份——每天定时备份,保留前8天的备份 利用SQL Server代理新建作业来定期备份 1)在数据库库的[SQL Server代理]->[作业],右键[新建作业] 2)在[常规]选项卡设置[名称](自定义) 3)在[步骤]选项卡中点击[新建],然后在弹出的窗口的[常规]选项卡中设置“步骤名称”(自定义):选择“类型”为“Transact-SQL 脚本(T-SQL)”(默认):选择“数据库”为你要备份的数据库:添加

MySQL数据库的自动备份与数据库被破坏后的恢复1

一.前言: 当数据库服务器建立好以后,我们首先要做的不是考虑要在这个支持数据库的服务器运行哪些受MySQL提携的程序,而是当数据库遭到破坏后,怎样安然恢复到最后一次正常的状态,使得数据的损失达到最小. 或者说,仅仅是数据库服务器的建立,只能说明它能做些什么,并不代表它能稳定的做些什么.灾难恢复的效率及全面性,也是系统的稳定性的一个准因素,尤其对于一个服务器系统. 这一节,介绍数据库自动备份以及数据库被破坏后的恢复的方法.在这里,我们使用mysqlhotcopy,并且定义一段Shell脚本来实现数

Source insight添加工具自动排版

当在网上找了一些别人的程序拿来学习,用Source insight来看时,会不会因为代码太乱看了义愤填膺呢? 有很多集成的开发环境可以自动排版,但source insight却不行!不过,有工具和配置,可以帮助完成这个事情: 1,下载astyle工具:http://download.csdn.net/detail/taixinlfx/43067302,打开你的SourceInsight, 选择菜单"Options-->Custom Commands-->Add", 输入Ar

关于.net 保存 decimal类型数据到SQLServer2012数据库时自动取整的问题

公司同事问我有没有遇到过decimal类型数据入库时,会自动取整的问题(比如12.3入库后值是12,12.8入库后值是13,入库后自动四舍五入自动取整): 之前就遇到过从数据去decimal类型数据时,会自动取整的问题:我想应该是同样的问题吧,叫同事设置SQLParameter参数时,设置Scale=2,Precision=18:类似代码如下: var param1 = new SqlParameter("@Money",System.Data.SqlDbType.Decimal);