Home > Backend Development > C#.Net Tutorial > Let's talk about how to use pure C language to read and write EXCEL

Let's talk about how to use pure C language to read and write EXCEL

青灯夜游
Release: 2022-07-07 11:03:22
forward
5435 people have browsed it

如何利用纯C语言对EXCEL进行读写操作?下面本篇文章给大家介绍一下通过纯C语言进行EXCEL读写操作的方法,希望对大家有所帮助!

Let's talk about how to use pure C language to read and write EXCEL

在之前需要使用C语言读取Excel文件内容的功能,查阅了很多资料,大部分是通过ODBC或者过OLE/COM对Excel表格的读取操作,这变要求在工程中添加类,如CApplicaton及其头文件等,这包括Excel接口、导入类、头文件等。操作十分复杂,当然我也对这种方法进行了尝试,也实现了功能,这种方法实现的功能比较多,一般我们只是进行简单的读写操作,所以并不是很想使用这种方法。下面通过C语言读写程序来实现。

一、写操作

第一步:单纯C语言写入Excel文件只能是 *.csv的后缀文件(是和txt一样,以二进制文本形式存储,它是以都逗号分隔符做个单元格内容的划分, .xls存储比较复杂, .csv文件可以可以通过.xls或者.xlsx文件另存为,选择.csv文件格式),它们可以通过Notepad++等记事本软件当做txt文件打开。

需要注意的是:当对*.xls文件写入或者读取之后,再打开Excel文件时会弹出格式兼容的提示窗口,因为这样的C语言操作Excel文件是当文本文件打开操作的,所以会忽略原有格式,但是不影响,点击“是(Y)”即可,如下图所示:

Lets talk about how to use pure C language to read and write EXCEL

第二步:对表格的处理,使用C语言打开表格后,文件指针指向整个表格的第1行第1列。
如果要给它的下一个同行单元格(第1行第2列)写数据,使用"\t" ;
如果要给它的下一个同列单元格(第2行第1列)写数据,使用"\n" 。

具体代码如下:

void writeExcel()
{
	char chy[4]={ 'x' ,'a' ,'h','w' } ;
	int data[4]={ 1 , 3 , 6 ,9	};
	int i ;
	FILE *fp = NULL ;
	fp = fopen("G:\\Desktop\\test.csv","w") ;
	for (i=0 ; i<p>Lets talk about how to use pure C language to read and write EXCEL</p><p><img src="https://img.php.cn/upload/article/000/000/024/a1fc0edac4daee0c1a2c38737329dae2-1.png" alt="Lets talk about how to use pure C language to read and write EXCEL"><br><img src="https://img.php.cn/upload/article/000/000/024/a1fc0edac4daee0c1a2c38737329dae2-2.png" alt="Lets talk about how to use pure C language to read and write EXCEL"></p><h2><strong>二、读操作</strong></h2><h3><strong>读取文件</strong></h3><p><img src="https://img.php.cn/upload/article/000/000/024/c952046d707d0b8edad6ce2e29587c1c-3.png" alt="Lets talk about how to use pure C language to read and write EXCEL"><br><img src="https://img.php.cn/upload/article/000/000/024/c952046d707d0b8edad6ce2e29587c1c-4.png" alt="Lets talk about how to use pure C language to read and write EXCEL"></p><p>对于读取Excel文件的操作,使用了文件随机定位函数<strong>fseek()</strong>,它的一般调用格式如下:<br> fseek(文件指针,位移量,起始位置) ;<br> **fseek()**参数说明:<br> 位移量<br> : 指重新定位时的字节偏移数,表示相对于基址的字符数,通常是一个长整型数,可以是整形常量,整形表达式等。如果用整型常量,需要再后面加上字母“L”;如果使用整形表达式需要用“(long)(表达式)”强制转换成长整形。</p>
Copy after login
  • 起始位置
  • 指重新定位时的基准点,也就是基址,用整数或符合常量表示。如下表:
整数 符号常量 对应的起始位置
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 <p>Lets talk about how to use pure C language to read and write EXCEL</p>
<p><img src="https://img.php.cn/upload/article/000/000/024/c952046d707d0b8edad6ce2e29587c1c-5.png" alt="Lets talk about how to use pure C language to read and write EXCEL"></p>
<hr>
<p><strong>十分抱歉,由于个人疏忽,代码给大家带来麻烦,再次表示抱歉。以上读Excel文件的错误已经解决,代码已经更新,错误的产生是由于fseek( )函数放错了位置,以及其中第二个参数的偏移量的错误,若大家在以后学习中发现读取数据全为0或者读取数据顺序位置不正确,请查阅fseek( )函数的参数使用方法。</strong></p>
<p><strong>另外,上述开发是在CodeBlocks中进行的,如果使用Visual Stdio 2010等版本软件,出现闪退问题,是软件自身bug所致,在main( )函数结尾添加"system(“pause”); 或者getchar( ); " 即可解决,对应的VS2010读Excel实例如下:</strong></p>
<hr>
<p>例程:</p>
<p><img src="https://img.php.cn/upload/article/000/000/024/c952046d707d0b8edad6ce2e29587c1c-6.png" alt="Lets talk about how to use pure C language to read and write EXCEL"></p>
<p>读该Excel文件代码如下:</p>
<pre class="brush:php;toolbar:false">#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 <p>VS2010工程如下:</p>
<p><img src="https://img.php.cn/upload/article/000/000/024/8719e70cfc8187a991b918d170ac3f33-7.png" alt="Lets talk about how to use pure C language to read and write EXCEL"></p>
<p>Lets talk about how to use pure C language to read and write EXCEL:</p>
<p><img src="https://img.php.cn/upload/article/000/000/024/8719e70cfc8187a991b918d170ac3f33-8.png" alt="Lets talk about how to use pure C language to read and write EXCEL"></p>
<h2>三、最新补充</h2>
<hr>
<p>由于经常有朋友告诉我Lets talk about how to use pure C language to read and write EXCEL是0 ,并将他们的工程发到我邮箱,我试着运行了下,确实发现是0.0 ,程序没有报错。</p>
<p>然后,我试着将他们发给我的工程里的excel文件或者csv文件打开,发现会弹出提示文件Lets talk about how to use pure C language to read and write EXCEL,如果我点击“是”的话,文件同样可以继续打开,这可能是文件格式Lets talk about how to use pure C language to read and write EXCEL了,所以程序计算不了数据的位置。我简单的将他们的excel文件重新另存为了一个excel,便运行成功了。他们的excel问题如下图。</p>
<p><img src="https://img.php.cn/upload/article/000/000/024/8c199489060abe3eea489ccf96d2e7d2-9.jpg" alt="Lets talk about how to use pure C language to read and write EXCEL"></p>
<p>Lets talk about how to use pure C language to read and write EXCEL后还可以打开:</p>
<p><img src="https://img.php.cn/upload/article/000/000/024/8c199489060abe3eea489ccf96d2e7d2-10.gif" alt="Lets talk about how to use pure C language to read and write EXCEL"></p>
<p>谢谢! 有问题可以,一起讨论下,不过希望自己能够一步从简到繁的进行调试也是一种学习,希望不用直接把代码扔过来让给修改。</p>
<p>相关推荐:《<a href="http://www.php.cn/course/list/37.html" target="_blank" textvalue="C视频教程">C视频教程</a>》</p></stdio.h>
Copy after login

The above is the detailed content of Let's talk about how to use pure C language to read and write EXCEL. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:csdn.net
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template