# C 语言操作 EXCEL 文件 (读写)

# 一,写操作

第一步:对表格的处理,使用 C 语言打开表格后,文件指针指向整个表格的第 1 行 第 1 列。

如果要给它的下一个同行单元格 (第 1 行 第 2 列) 写数据,使用 "\t" 分隔符

如果要给它的下一个同列单元格 (第 2 行 第 1 列) 写数据,使用 "\n" 换行符

具体代码如下:

需要引入的头文件:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
void writeExcel()
{
    char chy[4] = { 'x', 'a', 'h', 'w' };
    int data[] = { 3.15F, 6, 4, 2, 7 };
    int data1[] = { 6, 7, 5, 3, 8 };
    int data2[] = { 3, 4, 6, 4, 8 };
    int data3[] = { 5, 6, 7, 5, 10 };
    int data4[] = { 6, 10, 8, 6, 11 };
    int data5[] = { 7, 11, 9, 7, 12 };
    int data6[] = { 7, 8, 10, 10, 11 };
    int i;
    FILE* fp = NULL;
    fp = fopen("D:\\cExcelTest.xls", "w");
    if (fp == NULL) {
        perror("Failed to open file");
        exit(EXIT_FAILURE);
    }
    for (i = 0; i < 4; i++)
    {
        fprintf(fp, "%d\t%d\t%d\t%d\t%d\t%d\t%d\n", data[i], data1[i], data2[i], data3[i], data4[i], data5[i], data6[i]);
    }
    fclose(fp);
}

运行结果:

image-20240811220148093

# 二,读操作

读取文件,对于读取 Excel 文件的操作,使用了文件随机定位函数 fseek (),它的一般调用格式如下:

fseek (文件指针,位移量,起始位置)

fseek () 参数说明:

位移量:指重新定位时的字节偏移数,表示相对于基地址的字符数,通常是一个长整型数,可以是整型常量,整型表达式等。如果用整型常量,需要再后面加上字母 "L",如果使用整型表达式需要用 (long) 表达式 强制转换成长整型

起始位置:指重新定位时的基准点,也就是基地址,用整数或字符常量表示。如下表:

整数符号常量对应的起始位置
0SEEK_SET文件开头
1SEEK_CUR文件指针的当前位置
2SEEK_END文件末尾

例如:fseek (fp, 10L, 0)

具体代码如下:

void readExcel()
{
    FILE* fp;
    char filename[40];
    int i, j;
    float da[6][5] = {0};
    printf("输入文件名称:");
    gets(filename);
    fp = fopen(filename, "r");
    for (i = 0; i < 6; i++)
    {
        for (j = 0; j < 5; j++)
        {
            fscanf(fp, "%f", &da[i][j]);
            fseek(fp, 5L, SEEK_CUR);
        }
    }
    for (i = 0; i < 6; i++)
    {
        printf("%f\t%f\t%f\t%f\t%f\t\n", da[i][0],
            da[i][1], da[i][2], da[i][3], da[i][4]);
    }
}

运行结果:

image-20240811220806019