注意点
1、xls文件中每个格子之间的间距就是一个tab键,也就是
\t
2、xls文件的行和行之间是使用换行的,也就是\n
这些可以将一个xls文件使用记事本打开便可以一目了然
xls.h文件
#ifndef _XLS_H
#define _XLS_H
#include <stdio.h>
#include <time.h>
void writeExcel(char const* fileName,char data);
void getTimeString(char* time1);
void readExecl(char const* fileName, char* readInfo);
unsigned int getExeclTotalLine(char const* fileName);
#endif // !_XLS_H
xls.c文件
#include "xls.h"
/**
* @brief 获取时间字符串
* @param time1 传出参数,传出的时间字符串
*/
void getTimeString(char* time1) {
time_t timep;
struct tm* p;
time(&timep);
p = gmtime(&timep);
sprintf(time1, "%d-%d-%d", 1900 + p->tm_year, 1 + p->tm_mon, p->tm_mday);
}
/**
* @brief 将数据写入XLS文件中
* @param fileName 文件路径
* @param data 数据
*/
void writeExcel(char const* fileName, char data) {
FILE* fp = NULL;
fp = fopen(fileName, "a"); // 读的方式打开文件
fseek(fp, 0, SEEK_END); // 指针移动到文件的末尾
time_t timep;
struct tm* p;
char time1[28] = {0};
time(&timep);
p = gmtime(&timep);
sprintf(time1, "%d:%d:%d",(8 + p->tm_hour) % 24, p->tm_min, p->tm_sec); // 获取系统的当前时间
fprintf(fp, "%s\t%d\n", time1, data);
fclose(fp);
}
/**
* @brief 读取文件中的全部内容
* @param fileName 文件路径
* @param readInfo 传出参数,文件的内容
*/
void readExecl(char const* fileName,char * readInfo) {
FILE* fp = NULL;
fp = fopen(fileName, "r"); // 读的方式打开文件
fseek(fp, 0, SEEK_END);
int length = ftell(fp); // 获取文件内容的长度
fseek(fp, 0, SEEK_SET);
fread(readInfo, 1, length, fp);
fclose(fp);
}
unsigned int getExeclTotalLine(char const* fileName ) {
unsigned int lineNummber = 0;
FILE* fp = NULL;
fp = fopen(fileName, "r"); // 读的方式打开文件
char ch;
while ((ch = fgetc(fp)) != EOF) // 直到读取到文件的末尾
{
if (ch == '\n') // 读取到了换行符号
{
lineNummber++;
}
}
fclose(fp); // 关闭文件
return lineNummber;
}
main.c文件
#include <stdio.h>
#include "xls.h"
void main()
{
char time[28] = { 0 };
char data[512] = { 0 };
writeExcel("C:\\Users\\dongfang\\Desktop\\read.xls",23);
readExecl("C:\\Users\\dongfang\\Desktop\\read.xls",data);
getTimeString(time);
int line = getExeclTotalLine("C:\\Users\\dongfang\\Desktop\\read.xls");
printf("%s\n",data);
printf("%s\n",time);
printf("%d\n",line);
}