1.使用C语言对EXCEL文件的写入操作
步骤1:用C语言可以写入Excel文件的文件只有*.csv后缀的文件(与txt一样以二进制文本形式存储,单元格内容以逗号分隔符划分,.xls存储比较复杂,.csv文件可以另存为.xls或者.xlsx文件,选择.csv文件格式),都可以通过++等记事本软件以txt文件形式打开。
需要注意的是,在写入或者读取*.xls文件后,打开Excel文件时会弹出格式兼容提示窗口,由于C语言操作Excel文件是作为文本文件打开的,所以会忽略原有的格式,但不会影响,直接点击“是(Y)”即可。
第二步:处理表格,用C语言打开表格后,文件指针指向整个表格的第一行第一列。
如果要将数据写入同一行(第1行,第2列)的下一个单元格,请使用“\t”;
如果要将数据写入同一列(第 2 行、第 1 列)的下一个单元格,请使用“\n”。
具体代码如下:
结果如下:
2.EXCEL文件读取操作的C语言实现
读取文件
对于读取Excel文件的操作,采用文件随机定位函数fseek(),其通用调用格式如下:
fseek(文件指针,位移,起始位置);
**fseek()** 参数说明:
移位
:指重定位时的字节偏移数,表示相对于基址的字符数,通常为长整数,可以是整型常量、整型表达式等。若使用整型常量,则需在其后添加字母“L”;若使用整型表达式,则需要使用“(long)()”强制转换为长整数。
初始点
指重定位时的参考点,即基地址,以整数或常数表示。如下表所示:
例如:
fseek(fp,10L,0);
具体代码如下:
运算结果
如果发现读取的数据全为0或者读取的数据顺序不正确,请参考fseek()函数的参数使用方法。
另外,以上是在 中进行的,如果你使用 VS 等版本软件也出现闪退问题,则是软件本身的 Bug 导致的,可以在 main() 函数最后添加“("pause"); 或者 ();” 来解决。对应的 VS Excel 读取示例如下:
读取此Excel文件的代码如下:
VS如下:
运行结果:
3. 添加
朋友告诉我结果为0,并把他们的项目发给我,我尝试运行,发现确实是0.0,程序也没有报错。
然后我尝试打开他们发给我的excel文件或csv文件,发现文件损坏了。如果我点击“是”,文件仍然可以打开。这可能是因为文件格式损坏了,所以程序无法计算数据的位置。我干脆把他们的excel文件另存为另一个excel文件,就可以成功运行了。他们的excel问题如下图所示。
即使损坏后仍可打开。
四、结论