论如何快速完成文件汇总和统计任务
咱就是说,大学生和研究生当个班委,一天天杂事可真多,尤其收excel表以及统计人数等,费时费力。那么如何快速解决这些问题,就是我们今天这篇博文的主要目标。
拿我个人的任务来说:
完成一个党员代表、纪委代表、党委代表的票数汇总,并选出票数最高的前30个。我们支部共35个人,每人都要完成选举,也就是说每人要交三个excel表格,那么我一共会收到363个表格。每个表格会出现30多个名字,那么我要统计的数据就有363*30=3240条数据,一个一个数估计要累死我,此时自动化办公就派上用场。
首先,收表
直接发个在线云盘链接,让大家把每个人的excel表格按三个类别提交到相应的云盘文件夹里。
其次,汇总
拿党员代表的汇总为例,党员代表文件夹里一共有35个excel表格,我的想法是,把35个表格 的有用信息汇总到一个大的excel里,此时用matlab的xlsread和xlswrite函数就肥肠滴方便。
具体代码如下所示:
%% dangyuan
clc;
clear all;
data = cell(1,2);%xlsread读出来是元组,所以构建空元组,便于后期多个元组的并联
path = 'C:\Users\admin\Desktop\党员代表大会候选人提名表-三支部\'; %此处文件地址改为需要的文件夹路径
Filesname = dir(strcat(path,'*.xlsx')); %找到当前路径文件夹下的以.xlsx为后缀的文件名,strcat是横向连接字符的函数
Length = length(Filesname ); %计算文件夹里xls文档的个数
for i = 1:Length %批量读取文件的内容并保存[num,txt] = xlsread(strcat(path,Filesname (i).name),'B6:C15');file_name = Filesname (i).name;[m,n] = size(txt);if n==1%为什么加if语句,因为有的人不好好填表,有的人不填第二列,导致元组并联出错,所以加个if聚语句防止报错data = data;elsedata = [datatxt];end%eval( ['T',num2str(i),'=','txt'] );
endxlswrite("dangyuandatanew.xlsx",data);%最后把并联起来的数据写到文件里%% dangwei
clc;
clear all;
data = cell(1,2);
path = 'C:\Users\admin\Desktop\党委委员候选人提名表-三支部\'; %此处文件地址改为需要的文件夹路径
Filesname = dir(strcat(path,'*.xlsx')); %找到当前路径文件夹下的以.xlsx为后缀的文件名,strcat是横向连接字符的函数
Length = length(Filesname ); %计算文件夹里xls文档的个数
for i = 1:Length %批量读取文件的内容并保存[num,txt] = xlsread(strcat(path,Filesname (i).name),'B5:C37');file_name = Filesname (i).name;[m,n] = size(txt);data = [data;txt];%eval( ['T',num2str(i),'=','txt'] );
endxlswrite("dangweidatanew.xlsx",data);%% jiwei
clc;
clear;
data = cell(1,2);
path = 'C:\Users\admin\Desktop\纪委委员候选人提名表-三支部\'; %此处文件地址改为需要的文件夹路径
Filesname = dir(strcat(path,'*.xlsx')); %找到当前路径文件夹下的以.xlsx为后缀的文件名,strcat是横向连接字符的函数
Length = length(Filesname ); %计算文件夹里xls文档的个数
for i = 1:Length %批量读取文件的内容并保存[num,txt] = xlsread(strcat(path,Filesname (i).name),'B5:C18');file_name = Filesname (i).name;[m,n] = size(txt);data = [data;txt];%eval( ['T',num2str(i),'=','txt'] );
endxlswrite("jiweidatanew.xlsx",data);
最后,统计
统计操作可以在excel里直接进行,分为两步走。