用Excel获取数据——不仅仅只是打开表格

引言:看到标题,你是否有些困惑?在Excel上具备数据获取的能力是指什么?难道不是把csv格式的表格和Excel格式的表格打开就好了吗?然而并非这样。
本文选自《数据化运营速成手册》。

  其实标题中有两层意思:第一层意思是在一些数据库管理不那么严格的中小型企业,可以通过Excel中的ODBC数据接口,与数据库或者数据仓库建立连接,直接快速取数,提高工作效率;第二层意思是Excel 2016中有相当强大的数据获取工具,即便不能从数据库直接获取,也能从多个本地的数据表中将数据抽取、整理和转化,并做到实时更新,也能提高工作效率。

  下面就用简短的篇幅介绍Excel中的“数据查询”功能。如图1所示,在“数据”选项卡下面单击“新建查询”下拉菜单,就能看到Excel提供的数据获取抓手非常丰富。可以从本地的其他工作簿,也可以从SQLServer、MySQL、Oracle等数据库,还可以从Hadoop的HDFS文件查询获取数据。本节以从本地文件查询和从Web端查询为例介绍。

               
                        图1 数据查询功能

  延续之前的例子,我们将表A、表B和表C分别建立成3个Excel文件。在“新建查询”中单击“从工作簿”后,选择我们要的表A,就会出现一个连接的“导航器”,如图2所示。若直接单击“加载”按钮,则表A的数据会全部进入打开的工作表,并建立一个查询连接。若我们单击“编辑”按钮,则会弹出编辑查询的设置界面。在“查询编辑”面板中,可以可视化地实现SQL,诸如选择列、添加筛选条件、构造新的字段等,如图3所示。

           
                        图2 新建数据查询

         
                        图3 编辑数据查询

  我们的目的是将表A、表B和表C三张表合并。那么,最合理的做法是将表B作为主表,把表A和表C的内容合并上去。首先,我们分别建立了针对三张表的查询,如图4所示。

                  
                       图4 新建与源数据的查询

  第二步开始设置表B的查询,点开设置面板后,单击“合并查询”按钮,如图5所示。

         
                        图5 应用合并查询

  第三步,在“合并查询”的设置面板中,选好两张表对应的键,即“用户ID”,然后在“联接种类”中选择“左外部(第一个中的所有行,第二个中的匹配行)”,这就是一个“LEFT JOIN”,如图6所示。

             
                     图6 合并中设置匹配列和联接种类

  单击“确定”按钮后,查询设置界面上出现一个“NewColumn”,如图7所示,点开它右边的按钮,在下拉列表框中选择要匹配进表B的字段,选择“用户姓名”、“所在区域”、“性别”和“注册来源”。

         
                       图7 选择要匹配的字段

  完成这一步,实际上表A和表B已经成功合并了,我们再次单击“合并查询”选项,如图8所示,按刚才的操作,将表C中的“事件”字段进行“LEFT JOIN”,终于大功告成,如图9所示。

             
                     图8 新的合并中再次设置匹配列和联接种类

          
                         图9 完成合并后的效果

  经过上述步骤,不同的表建立查询后,作为数据源的表一旦有变动,我们只要右键单击查询设置页面中上方的“刷新”按钮,数据就会更新。不需要反复地复制粘贴,更不需要手动写函数转化,大大提高了工作效率。
  对这个内容再做一点小小的延伸。在工作中,作者会根据分析需求,先用查询工具将各个来源的表连接成一个主表;然后由这个主表做透视表和数据透视图,数据透视表的数据源就是引用整张表对象,而不是一个区域。这样能实现数据报表的半自动化。只要数据源进行了更新,那么打开制作报表的Excel工作簿,将查询链接更新一下,再将数据透视表更新一下,新的报表就完成了。用这个方法,可将原来半天的工作量压缩为30分钟,效率的提升是非常可观的。
  除了在本地文件之间建立查询,再简单介绍如何从网页上爬取数据。我们从NBA数据统计网站上拉取某个页面上呈现的上个赛季东西部球队的战绩情况,如图10所示。

        
                        图10 NBA数据统计网站

  过程其实非常简单。首先,建立一个从Web端的数据查询。单击图11所示的“从Web”选项后,在弹窗中输入URL,单击“确定”按钮。接着,Excel就会自动访问这个网页,并将网页中存储在

标签内的数据内容抓取出来。然后,熟悉的页面出现了。如图12所示,在“导航器”中,我们看到了网页中呈现的数据。直接单击“加载”按钮,数据就会出现在我们的Excel工作表中。

                 
                        图11 从Web端建立数据查询

            
                        图12 从Web端爬取NBA战绩数据

  在Excel中,获取数据的功能其实非常强大,而作者只使用了其中的“冰山一角”。希望大家在日常工作中多学多用,并把有价值的经验分享出来。

  本文选自《数据化运营速成手册》,点此链接可在博文视点官网查看此书。
                    
  想及时获得更多精彩文章,可在微信中搜索“博文视点”或者扫描下方二维码并关注。
                       

时间: 2024-08-27 12:52:00

用Excel获取数据——不仅仅只是打开表格的相关文章

java读取excel获取数据写入到另外一个excel

pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4

自动化接口测试平台:从excel读取数据,传递到request请求中获取不到参数问题

遇到一个问题,将入参的必填参数按照dict格式填入excel表格中,从excel读取数据传递到request请求一直获取不到参数 解决: 1.注意从excel中读取的数据格式为str,传递到request请求的参数格式要求为dict 2.需要将数据反序列化,有以下两种方法: request.post对于参数传入的格式有特殊要求:post请求是我们常说的提交表单,表单的数据内容就是post请求的参数,request实现post请求需设置请求参数data,数据格式 可以为字典.元组.列表和json格

Ajax获取数据后append追加到表格内出现格式混乱的错误

Ajax获取数据后append追加到表格内出现追加的数据与表格风格不同的错误: $("#courierTable").append("<tr style='text-align: center'> class='tab-content'") $("#courierTable").append("<tr style='text-align: center'> class='tab-content'") $

获取Excel部分数据并很据项目要求计算适宜性等级综合指数判断该地区的土壤适宜性

代码运行前请先导入jxl架包,以下代码仅供学习参考: 下图为项目中的Excel: ExcelTest02类代码如下: // 读取Excel的类 import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; public class ExcelTest02 { /* *该代码需要先获得exce

复制透视表样式时,系统提示“ excel无法从磁盘内获取数据透视表的源数据”

透视表A表定义好了样式,透视表B要应用. 透视表A---选项---选择---整个数据透视表 右键单击透视表A,复制 进入透视表B工作表,空白处粘贴全部, "设计",选择自定义样式,则正常应用 一般在步骤4会出现系统提示" excel无法从磁盘内获取数据透视表的源数据" 解决: 选择透视表B,"选项"----"刷新" 重新选择自定义样式

从后台获取数据导出excel文件

做oa系统的都会有这个要求:根据数据导入excel文件.只需要点击一下,你所需要的数据就直接生成一个excel文件了,是不是很方便? 是的没错,很方便,但是对于我们来说是一件很痛苦的事情,所以说一下我的经历.因为是第一次写excel文件导出,所以代码可能写的很烂,不喜勿喷. 有什么意见也可以直接留言哦,希望与大家一起交流 第一步,先在pom.xml文件依赖jar包: <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --> &

excel数据复制到html表格&lt;textarea&gt;中

将excel的数据粘贴到html的表格<textarea>中,可以点击html表格中的任何一个<textarea>点击粘贴,效果和在excel中一样. 单元格复制后的数据格式为"设备\t缺陷类型\r\n水压堵阀\t母材裂纹". 单元格之间通过"\t"分隔,行间通过"\r\n"分隔. 数据必须粘贴到<textarea>多文本框中,如果是<input>控件换行符"\r\n"会被删除掉

利用Python将excel数据读取到word表格

在工作中可能需要两者对excel和word进行转化,今天介绍例如Python 将excel转word表格 看图,我需要将这份excel文档转word表格: 思路: 1.创建需要的表格: 2.读取excel文档: 3.将excel文档数据写入word表格对应的位置: 4.循环 需要用到的模块 创建表格,由于我需要的表格需要进行合并处理,所以使用merge合并单元格 接下来,读取excel文档数据 然后,将excel数据写入到已创建的word表格中 至此我们就可以将一条excel数据读取到word表

NPOI 创建Excel,数据读取与写入

<1> using System; using System.Collections.Generic; using System.Linq; using System.Web; using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using NPOI.SS.Formula.Functions; using System.IO; using System.Text; namespace 导入导出Excel { /// <summary&g