每场钉钉直播都可以导出数据,记录着直播总时长与观看的人员及时长和未观看的人员,接下来的介绍是针对多个导出的Excel文件进行总数据收集。
csv格式:
Excel中文件会以文本形式一行行显示,单元格之间转换为逗号
从钉钉导出的数据为.xls格式,这里我们需要打开.xls表格并另存为.csv格式,我们采用一行行读取数据
思路如下:
1)提取总时长
根据钉钉导出数据的格式,参考转化后的.csv格式文件的内容,用文本文件打开转格式后的.csv文件,很容易知道,在csv中第五行第四个逗号后面的内容即为本场直播的总时长,格式为固定的 hh:mm:ss,我们以分钟为单位提取出来
2)提取观看者及观看时长
观察csv文件,也易知第九行为第一个学生的名字,第一个逗号为观看者的姓名,第二个逗号后面为观看者观看的时长,时长分为两种:
1.xx小时xx分钟
2.xx分钟
用分支语句以两种方式提取
然后继续读取下一行,即下一个观看者的数据
3)提取未观看者的信息
观察csv文件,易知在未观看学生一行的上面有固定两行逗号
未观看学生一行下面的信息有两种情况
1.有未观看者,即在下面出现未观看者的信息,提取第一个逗号前的名字,继续读取下一个行,遇到一行逗号截止
2.无未观看者,即在下行就只有一行逗号
使用方法
按1输入你的csv文件名,会输出当前文件的观看信息,即截止目前(即前面输入的所有文档数据)的总观看数据,
按2输出总观看数据
按3输出到Excel表格中
这里记住都要与生成的.exe程序放在同一个目录下:
源码附录:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Mess
{
char name[50];
int time;//分钟为单位
int all;
}mess[1000];
int Mess_SearchByIndex(int id);//查找姓名
void Mess_Display();//输出截止目前观看者的信息
void Mess_out();//将截止目前汇总的信息导入Excel文件中
void IO_ReadInfo();//读出文件
void IO_WriteInfo();//读入文件
int num=0;
int Mess_SearchByIndex(char *a)
{
int i;
for (i=0;i<num;i++)
{
if (strcmp(a,mess[i].name)==0)
{
return i;
}
}
strcpy(mess[num].name,a);
mess[num].time=0;
mess[num].all=0;
num++;
return num-1;
}
void Mess_Insert()
{
FILE *fp;
int time1=0;
char da[100];
char filename[100];
printf("请输入你的csv文件名:\n");
scanf("%s",filename);
fp=fopen(filename,"r");
if(!fp)
printf("sh