c语言对xls文件的操作

3 篇文章 1 订阅

注意点

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);
}

结果

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
C语言可以通过使用第三方库或者手动操作文件来实现Excel文件的读写。以下是两种方法的介绍: 方法一:使用第三方库 1.1 使用libxls库来读取Excel文件 步骤一:下载libxls库 在http://sourceforge.net/projects/libxls/ 上下载libxls库并解压。 步骤二:安装libxls打开命令行窗口,进入解压后的文件夹,执行以下命令: ./configure make sudo make install 步骤三:创建程序文件 创建一个新的C程序文件,例如“excel_read.c”。 步骤四:编写代码 在程序文件中添加以下代码: #include <stdio.h> #include <stdlib.h> #include "libxls/xls.h" int main(int argc, char **argv) { xlsWorkBook* pWB; xlsWorkSheet* pWS; xlsCell* pCell; int i, j; if(argc < 2) { printf("Usage: %s filename.xls\n", argv[0]); return 0; } pWB = xls_open(argv[1], "UTF-8"); if (pWB == NULL) { printf("Error opening file %s\n", argv[1]); return 1; } pWS = xls_getWorkSheet(pWB, 0); if (pWS == NULL) { printf("Error opening worksheet\n"); return 1; } for(i=0; i<=pWS->rows.lastrow; i++) { for(j=0; j<=pWS->rows.lastcol; j++) { pCell = xls_cell(pWS, i, j); if (pCell != NULL && pCell->str != NULL) { printf("%s\t", pCell->str); } else { printf("\t"); } } printf("\n"); } xls_close(pWB); return 0; } 该代码用于读取Excel文件中的数据并输出到控制台。 步骤五:编译和运行程序 在命令行窗口中执行以下命令: gcc -o excel_read excel_read.c -lxlsreader ./excel_read filename.xls 其中,“filename.xls”是要读取的Excel文件名。 1.2 使用libxl库来写入Excel文件 步骤一:下载libxl库 在http://www.libxl.com/ 上下载libxl库并解压。 步骤二:安装libxl库 打开命令行窗口,进入解压后的文件夹,执行以下命令: ./configure make sudo make install 步骤三:创建程序文件 创建一个新的C程序文件,例如“excel_write.c”。 步骤四:编写代码 在程序文件中添加以下代码: #include <stdio.h> #include "libxl.h" int main() { BookHandle book = xlCreateBook(); SheetHandle sheet = xlBookAddSheet(book, "Sheet1"); int i, j; for(i=0; i<10; i++) { for(j=0; j<10; j++) { xlSheetWriteNum(sheet, i, j, i*j, 0); } } xlBookSave(book, "output.xls"); xlBookRelease(book); return 0; } 该代码用于创建一个Excel文件并写入一些数据。 步骤五:编译和运行程序 在命令行窗口中执行以下命令: gcc -o excel_write excel_write.c -lxl ./excel_write 程序会将生成的Excel文件保存为“output.xls”。 方法二:手动操作文件 2.1 打开Excel文件 可以使用标准C库中的fopen函数来打开Excel文件,例如: FILE* fp = fopen("filename.xls", "rb"); 其中,“rb”表示以二进制模式打开文件。 2.2 读取Excel文件 可以使用标准C库中的fread函数来读取Excel文件中的数据,例如: char buffer[1024]; int readSize = fread(buffer, 1, sizeof(buffer), fp); 其中,“buffer”是用于存储读取数据的缓冲区,“readSize”是实际读取数据的大小。 2.3 写入Excel文件 可以使用标准C库中的fwrite函数来写入数据到Excel文件,例如: char buffer[] = "Hello, world!"; fwrite(buffer, 1, sizeof(buffer), fp); 其中,“buffer”是要写入的数据。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值