C语言操作EXCEL文件(读写)_c语言读取excel表格

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

如果你需要这些资料,可以戳这里获取

writeExcel()  ;	

}


#### 运行结果


![写入文件](https://img-blog.csdnimg.cn/img_convert/c1d3e2375b87292b275a3bc7d90ea737.png)  
 ![写入文件](https://img-blog.csdnimg.cn/img_convert/01e29874d7fd9678bfe778b83df86126.png)


### 二、读操作


#### 读取文件


![打开文件](https://img-blog.csdnimg.cn/img_convert/10838b68b3e1113b52c4ca76ce1d0cfb.png)  
 ![读取文件内容](https://img-blog.csdnimg.cn/img_convert/d59284149d58f765b052b58801ba7a68.png)


对于读取Excel文件的操作,使用了文件随机定位函数**fseek()**,它的一般调用格式如下:  
 fseek(文件指针,位移量,起始位置) ;  
 \*\*fseek()\*\*参数说明:  
 位移量  
 : 指重新定位时的字节偏移数,表示相对于基址的字符数,通常是一个长整型数,可以是整形常量,整形表达式等。如果用整型常量,需要再后面加上字母“L”;如果使用整形表达式需要用“(long)(表达式)”强制转换成长整形。


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



| 整数 | 符号常量 | 对应的起始位置 |
| --- | --- | --- |
| 0 | SEEK\_SET | 文件开头 |
| 1 | SEEK\_CUR | 文件指针的当前位置 |
| 2 | SEEK\_END | 文件末尾 |


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


具体代码如下:



#include <stdio.h>
void main()
{
FILE *fp;
char filename[40] ;
int i,j ;
float da[6][5] = {0} ;
printf(" 输入文件名: “);
gets(filename);
fp=fopen(filename,“r”); // fp指针指向文件头部
for(i = 0 ;i < 6 ; i++)
for(j = 0 ;j < 5 ; j++)
{
fscanf(fp,”%f",&da[i][j]);
fseek(fp, 5L, SEEK_CUR); /fp指针从当前位置向后移动/
}

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

}


#### 运行结果


![运行结果](https://img-blog.csdnimg.cn/img_convert/a4c475447afa76e9a26e32209efa8023.png)




---


**十分抱歉,由于个人疏忽,代码给大家带来麻烦,再次表示抱歉。以上读Excel文件的错误已经解决,代码已经更新,错误的产生是由于fseek( )函数放错了位置,以及其中第二个参数的偏移量的错误,若大家在以后学习中发现读取数据全为0或者读取数据顺序位置不正确,请查阅fseek( )函数的参数使用方法。**


**另外,上述开发是在CodeBlocks中进行的,如果使用Visual Stdio 2010等版本软件,出现闪退问题,是软件自身bug所致,在main( )函数结尾添加"system(“pause”); 或者getchar( ); " 即可解决,对应的VS2010读Excel实例如下:**




---


例程:  
 ![这里写图片描述](https://img-blog.csdnimg.cn/img_convert/757e944c9db3d10983421a6a90223a01.png)


读该Excel文件代码如下:



#include <stdio.h>
void main()
{
FILE *fp;
char filename[40] ;
int i,j ;
float da[6][5] = {0} ;
printf(" 输入文件名: “);
gets(filename);
fp=fopen(“as.csv”,“r”);
fseek(fp, 5L, SEEK_SET); // 从文件第二行开始读取
for(i = 0 ;i < 6 ; i++)
for(j = 0 ;j < 5 ; j++)
{
fscanf(fp,”%f",&da[i][j]);
fseek(fp, 1L, SEEK_CUR); /fp指针从当前位置向后移动/
}

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

getchar() ;

}


VS2010工程如下:  
 ![这里写图片描述](https://img-blog.csdnimg.cn/img_convert/73f80a389373126306e964ccaede3c23.png)


**收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。**
![img](https://img-blog.csdnimg.cn/img_convert/25073035ea1708b263226f8f392a0aee.png)
![img](https://img-blog.csdnimg.cn/img_convert/4536c75baf1fb6ed0252df9d3c3f3bd7.png)

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618679757)**

**需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人**

**都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

757)**

**需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人**

**都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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”是要写入的数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值