APP下载

通用Excel共享及查询系统设计与实现*

2019-02-07王进利丁小宝鲁大前

台州学院学报 2019年6期
关键词:电子表格字段数据表

王进利,丁小宝,鲁大前

(1.台州学院 人文学院,浙江 临海317000;2.台州学院 电子与信息工程学院,浙江 临海317000)

0 引言

随着无纸化办公程度越来越高,数据处理越来越依赖于Office 办公软件,特别是Excel 等电子表格程序,而越来越多的表格,催生了表格共享与查询的需求。传统的表格共享主要通过QQ、邮箱及使用局域网共享文件夹等方式,但这些方式无法适应移动互联网发展。因此卢德山等[1]提出了基于PHP 与电子表格的通用数据查询系统,该系统使用网页+电子表格(文本)做数据库的查询方案进行查询,可以实现任意表格数据的查询,但使用起来比较复杂、稳定性差、安全性较弱、后期数据维护不便。李烜[2]、刘松[3]、全思皓[4]等提出采用VBA 直接联接数据库,实现数据的读写,以减少学习成本、简化工作,但这种方式存在很大的安全风险,并要求使用者具有编程能力,因此无法大规模推广。

为发挥Excel 的强大的本地处理能力,也为适应随着移动互联网技术的发展,特别是H5 网页技术的快速发展,对通用表格系统灵活性的更高要求,因此本文提出了采用“Excel+H5 网页”的方式,来实现灵活的数据处理与查询。

1 需求分析及解决方案

在信息化过程中,电子表格的共享与查询是小微企业最迫切的需求。而要实现这个需求,必须在保证数据灵活性、可靠性、数据存储安全性、低泄漏风险的前提下,尽量满足管理成本、使用成本、系统成本低的实际需要,最好还要有权限管理、实时更新、本地导出、手机查询等功能。

Excel+VBA+PHP+MySQL 的方案可以很好的满足上述的要求。Excel 软件有数据操作灵活、多表操作等特点,以Excel 为界面来构建信息系统,可以减少终端用户的使用成本,因此在全世界范围内被广泛使用。

Visual Basic for Applications(VBA)是微软开发出来在其桌面应用程序中使用的编程语言,与Excel等紧密结合,能实现从“普通应用软件”到“软件构造模块”的转变。而国产的WPS 软件也有兼容的VBA安装包,可以实现表格编程。

PHP+MySQL 是最流行的组合,可以实现动态网页、复杂的网页制作、权限管理,并能满足现在移动查询、微信小程序、H5 网页等的应用构建需求。

结合上文,基于Excel+VBA+PHP+MySQL 的信息系统开发,需要充分发挥各个软件的优势,才能构建出一个通用、易用、高效的适用于小微企业的信息系统。

2 数据共享的原理与实现

2.1 一般用户使用方法

一键上传:上传时管理员只是把数据复制到指定位置,并设置相应的参数,最后点击上传,即可完成数据上传到网站的过程。

一键下载:只要设置相应的参数,再点击下载,即可实现数据从服务器到电子表格的全过程。全过程中管理员无需使用任何其它的工具,使用体验比较好。

2.2 工作原理介绍

如图1,在本系统中,含宏的表格、PHP 代码及MySQL 服务器都是专门设计出来为共享表格服务的,而小程序及公众号则是设计出来为查询数据服务的。

图1 共享查询系统工作原理

2.3 MySQL数据库设计

为了达到能把任意的电子表格上传到数据库,并能进行后期共享查询的目的,除了数据库中常见的用户及权限控制数据表外,我们将所有的电子表格上传到数据库中的一张数据表中。在如图2 的数据表中字段分两类:一类是固定的参数字段,如数据表名、上传密码、查看密码等;另一类字是数据字段,用户上传的数据全写入到这里。

图2 数据表设计

在第一类的参数字段中,数据表名、上传密码、查看密码等直接写在每一条记录中,这样在PHP 设计查询数据表时能极大的简化代码,减少工作量。

在第二类数据字段中,为了通用性,假定电子表格中所有的数据都是文本类型,并且假定数据共有50 条数据,所有数据字段都以d1,d2,d3,…,d50 来保存,所有数据字段都是text 类型。这样我们可以把用户上传的所有数据都接收到同一张数据表中,保证数据库的通用性,以方便后期的统一查询。

上述的数据库设计虽然不是最优的,但这种设计逻辑清晰,方便后期处理。虽然有数据冗余、字段类型单一的缺点,但对于小微型企业而言,即使部分数据重复,其性能损失也是可以接受的。而数据类型单一,无法进行数值计算的缺点,也可以后期通过代码智能识别而解决。

2.4 含VBA的电子表格设计

本文利用VBA 的强大功能,配置如图3 所示的配置参数,即可实现数据表的上传与下载。由于使用了PHP 网页作为中介,电子表格实质上类似于网页,就是B/S 结构,这可以避免将数据库账号与密码都写入Excel 中,从而能保证数据库的安全性。

图3 电子表格控制界面

上传过程即为利用POST 方法提交数据的过程:

(1)VBA 将数据行中的数据自动另存为如图4 的CSV 文件;

(2)向配套的PHP 网址以POST 方式提交此文件及包括用户名、密码、指定查询姓名字段等信息在内的信息;

(3)除指定字段外,只要有查看密码就能查看这个密码对应的所有的数据表。

上传密码仅用于上传,用户也可以更改查看密码。姓名字段主要用于查询时的自动补全,查询网址指定了数据上传的位置。

图4 导出的CSV 的样式

下载过程即为读取网页中的表格的过程:

(1)点击下载时,VBA 会向服务器提交一个含用户名、密码、数据表名、字段等查询信息的POST 请求给查询网址;

(2)配置的网址核对信息后,将符合条件的数据以表格的形式输出到网页;

(3)通过VBA 用QueryTables 方法读取网页中的数据并输出到电子表格中,从而实现数据的共享。

2.5 上传下载对应的PHP控制器设计

PHP 代码是本数据共享系统实现对数据库访问的关键,既要保证数据的安全,又要实现上传下载及查询的各种功能。

上传过程中,PHP 控制器在接收到POST 请求及相应的CSV 文件后:

(1)核对用户名与密码、IP 地址(可不要求),进行登陆操作,不存在则返回出错信息;

(2)核对数据表与上传密码是否正确,不正确则返回出错信息;

(3)清空所有数据表下现有的所有数据;

(4)在每条记录下的sheetname,name 等写入相应的信息,而排序、分类、缩略字段等信息,编码成Json 格式后写入custom1 中,然后把数据写入到d1、d2 等字段中。这样就完成了电子表格向MySQL 数据库的写入。

下载过程中,PHP 控制器在接收到要查询的数据表名、字段名等查询条件的POST 请求后:

(1)核对用户名与密码、IP 地址(可不要求),进行登陆操作,不存在则返回出错信息;

(2)核对数据表与查看密码是否正确,不正确则返回出错信息;

(3)根据POST 请求,进行数据查询,把查询得到的二维数组输出为表格显示在网页上。

2.6 网页查询的实现及优化

由于数据已在MySQL 服务器上,也不涉及电子表格,只需在保证数据安全性的前提下,利用PHP 将数据输出即可,并在输出过程中做到尽量的美化及实用。

查询流程如下:

(1)在如图5 的H5 页面中,用户只需要在文本框内输入自己要查询的信息即可;

(2)后台优先从指定的name、pid 字段中查询对应的值并输出到图6 的列表页面中;

(3)用户再从列表页中点击链接进入如图7 的详情页。

图5 网页查询页面设计

图6 网页查询列表页面设计

图7 网页详情页面设计

查询页面优化:

(1)用户进入查询界面后,直接输入要查询的信息,系统给出含这些信息的自动补全信息,方便查询;

(2)如果查询不到信息时,历遍所有字段进行查询;

(3)查询结果中自动识别网址、电话,方便使用;

(4)用户在搜索结果中,可以方便地进行这个字段的同类搜索。

3 安全性的分析

3.1 登陆安全防护

在传统网站中,用户登陆时,为了防止暴力破解,普遍采用了验证码的方式来增加破解的难度。在本文的电子表格上传及下载时,系统是处于未登陆的状态的,电子表格需提交用户名及密码进行用户认证登陆。而认证的过程中,为了简单,暂时没有加验证码,而是采用IP 地址验证及用户多次登陆失败锁定的机制来防止暴力破解。

3.2 上传与下载安全防护

与传统的网站相同,上传与下载(即导入与导出)功能只有管理员用户才能进行操作,而一般的普通用户是不具有此权限的。

3.3 网页查询安全防护

由于数据已存在MySQL 服务器上,也不涉及电子表格,只需在保证数据安全性的前提下,利用PHP将数据输出即可,输出过程中做到尽量的美化及实用。

4 结语

本数据共享系统,已经在GitHub 上开源[5]。作为一个通用性系统,本系统着力于解决电子表格共享中的通用性及便捷性问题。现阶段的系统已经是一个普适性极强、使用方便的、安全可靠的一个电子表格解决方案,推广后可用于小微企业的数据共享,推进其信息化进程。当然该方案还存在效率不高和界面优化等问题,仍需根据用户反馈进行进一步的优化。

猜你喜欢

电子表格字段数据表
湖北省新冠肺炎疫情数据表(2.26-3.25)
湖北省新冠肺炎疫情数据表
湖北省新冠肺炎疫情数据表
浅谈台湾原版中文图书的编目经验
电子表格的自动化检测
电子表格的自动化检测
浅谈电子表格技术在人事管理中的应用
Can we treat neurodegenerative diseases by preventing an age-related decline in microRNA expression?
电子表格音乐合成器
巧用EXCEL电子表格计算土地面积