c语言excel存储文件格式,C语言写excel文件(csv格式)

该代码段展示了如何在C语言中处理CSV文件,包括创建、追加数据以及读取文件。函数Hzhy_Write_CsvData用于写入CSV数据,包含变量名、日期时间及数值。UsbWriteFile和UsbReadFile分别用于USB设备上的文件写入和读取,同时检查文件大小限制。UsbGetFileSize则用于获取文件大小。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

csv:简化版excel,在PC机上等同于excel,可进行各种excel计算、画图。

#defineEACH_FILE_MAX_BYTE52428800

//-------------------------------------------------------------------

//功能:存放数据为csv格式

//输入:filename 写入U盘的文件名称,如ai.csv。

//name 变量名称。

//value 值。

//输出:0:成功!0:失败

//备注:

//-------------------------------------------------------------------

int Hzhy_Write_CsvData(char *filename,char *name,int value)

{

int len = 0,size;

struct tm *p;

char buff[256];

time_t timep;

time(&timep);

if (InitUsb() < 0)

return -1;

p=gmtime(&timep);

size = UsbGetFileSize(filename);

if(size == 0)

{

memset(buff,0,sizeof(buff));

printf("Build new file\n");

sprintf(buff,"变量名,时间,值\n");

len = strlen(buff);

UsbWriteFile(filename,buff,len);

}

else

{

if(size > EACH_FILE_MAX_BYTE)

{

printf("Beyond the maximum byte limit !\n");

return MAX_LEN_ERROR;

}

}

/*{

static int i=0;

printf("csv%03d\n",i++);

}

*/

memset(buff,0,sizeof(buff));

sprintf(buff,"%s, %d-%d-%d %d:%d:%d,%d\n",name,(1900+p->tm_year), (1+p->tm_mon),p->tm_mday,p->tm_hour, p->tm_min, p->tm_sec,value);

len = strlen(buff);

UsbWriteFile(filename,buff,len);

return 0;

}

//-------------------------------------------------------------------

//功能:写文件(包含创建)

//输入:

//输出:>=0:写入的数目<0:失败

//备注:

//-------------------------------------------------------------------

int UsbWriteFile(char *filename, char *buf, char len)

{

int fd,ret=0;

char name[100];

if (IsUsbExist == 0)

return -1;

if (strlen(filename) > 72)

{

printf("file name too long!\n");

return -4;

}

memset(name,0,sizeof(name));

sprintf(name,usb_path);

strcat(name,filename);

//printf("path:%s\n",name);

fd = open(name,O_RDWR|O_CREAT);//写方式打开文件,如果文件不存在则创建

if((fd < 0))//打开操作不成功

{

static int cnt=0;

if (cnt == 0)

{

cnt = 1;

printf("The file can not be opened.\n");

}

return -2;

}

lseek(fd,0,SEEK_END);//文件指针移动到末尾,追加

ret = write(fd,buf,len);

if (ret < 0)

perror("write err");

close(fd);

return ret;

}

//-------------------------------------------------------------------

//功能:读文件

//输入:

//输出:>=0:读取的数目<0:失败

//备注:

//-------------------------------------------------------------------

int UsbReadFile(char *filename, char *buf, char len)

{

int fd,ret=0;

char name[100];

if (IsUsbExist == 0)

return -1;

if (strlen(filename) > 72)

{

printf("file name too long!\n");

return -4;

}

memset(name,0,sizeof(name));

sprintf(name,usb_path);

strcat(name,filename);

//printf("path:%s\n",name);

fd = open(name,O_RDONLY);

if((fd < 0))//打开操作不成功

{

static int cnt=0;

if (cnt == 0)

{

cnt = 1;

printf("The file can not be opened.\n");

}

return -2;

}

lseek(fd,0,SEEK_SET);//文件指针移动到开头

ret = read(fd,buf,len);

if (ret < 0)

perror("read err");

close(fd);

printf("read Result:\n%s\n",buf);

return ret;

}

//-------------------------------------------------------------------

//功能:获取文件大小

//输入:

//输出:文件大小

//备注:

//-------------------------------------------------------------------

int UsbGetFileSize(char *filename)

{

int fd,size=0;

char name[100];

if (IsUsbExist == 0)

return -1;

if (strlen(filename) > 72)

{

printf("file name too long!\n");

return -4;

}

memset(name,0,sizeof(name));

sprintf(name,usb_path);

strcat(name,filename);

//printf("path:%s\n",name);

fd = open(name,O_RDONLY);

if((fd < 0))//打开操作不成功

{

static int cnt=0;

if (cnt == 0)

{

cnt = 1;

printf("The file can not be opened.\n");

}

return -2;

}

size = lseek(fd,0,SEEK_END);//文件指针移动到末尾

if (size < 0)

perror("get size err");

close(fd);

//printf("size=%d\n",size);

return size;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值