本文小編為大家詳細介紹“怎么利用純C語言對EXCEL進行讀寫操作”,內容詳細,步驟清晰,細節(jié)處理妥當,希望這篇“怎么利用純C語言對EXCEL進行讀寫操作”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網綜合服務,包含不限于網站設計制作、成都網站制作、孟連網絡推廣、微信小程序定制開發(fā)、孟連網絡營銷、孟連企業(yè)策劃、孟連品牌公關、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)為所有大學生創(chuàng)業(yè)者提供孟連建站搭建服務,24小時服務熱線:028-86922220,官方網址:www.rwnh.cn
第一步:單純C語言寫入Excel文件只能是 *.csv的后綴文件(是和txt一樣,以二進制文本形式存儲,它是以都逗號分隔符做個單元格內容的劃分, .xls存儲比較復雜, .csv文件可以可以通過.xls或者.xlsx文件另存為,選擇.csv文件格式),它們可以通過Notepad++等記事本軟件當做txt文件打開。
需要注意的是:當對*.xls文件寫入或者讀取之后,再打開Excel文件時會彈出格式兼容的提示窗口,因為這樣的C語言操作Excel文件是當文本文件打開操作的,所以會忽略原有格式,但是不影響,點擊“是(Y)”即可,如下圖所示:
第二步:對表格的處理,使用C語言打開表格后,文件指針指向整個表格的第1行第1列。
如果要給它的下一個同行單元格(第1行第2列)寫數(shù)據,使用"\t" ;
如果要給它的下一個同列單元格(第2行第1列)寫數(shù)據,使用"\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<4 ;i++) fprintf(fp,"%c\t%d\n",chy[i],data[i] ) ; fclose(fp); } void main() { writeExcel() ; }
運行結果
對于讀取Excel文件的操作,使用了文件隨機定位函數(shù)fseek(),它的一般調用格式如下:
fseek(文件指針,位移量,起始位置) ;
**fseek()**參數(shù)說明:
位移量
: 指重新定位時的字節(jié)偏移數(shù),表示相對于基址的字符數(shù),通常是一個長整型數(shù),可以是整形常量,整形表達式等。如果用整型常量,需要再后面加上字母“L”;如果使用整形表達式需要用“(long)(表達式)”強制轉換成長整形。
起始位置
指重新定位時的基準點,也就是基址,用整數(shù)或符合常量表示。如下表:
整數(shù) | 符號常量 | 對應的起始位置 |
---|---|---|
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]); }
運行結果
十分抱歉,由于個人疏忽,代碼給大家?guī)砺闊?,再次表示抱歉。以上讀Excel文件的錯誤已經解決,代碼已經更新,錯誤的產生是由于fseek( )函數(shù)放錯了位置,以及其中第二個參數(shù)的偏移量的錯誤,若大家在以后學習中發(fā)現(xiàn)讀取數(shù)據全為0或者讀取數(shù)據順序位置不正確,請查閱fseek( )函數(shù)的參數(shù)使用方法。
另外,上述開發(fā)是在CodeBlocks中進行的,如果使用Visual Stdio 2010等版本軟件,出現(xiàn)閃退問題,是軟件自身bug所致,在main( )函數(shù)結尾添加"system(“pause”); 或者getchar( ); " 即可解決,對應的VS2010讀Excel實例如下:
例程:
讀該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工程如下:
運行結果:
由于經常有朋友告訴我運行結果是0 ,并將他們的工程發(fā)到我郵箱,我試著運行了下,確實發(fā)現(xiàn)是0.0 ,程序沒有報錯。
然后,我試著將他們發(fā)給我的工程里的excel文件或者csv文件打開,發(fā)現(xiàn)會彈出提示文件損壞,如果我點擊“是”的話,文件同樣可以繼續(xù)打開,這可能是文件格式損壞了,所以程序計算不了數(shù)據的位置。我簡單的將他們的excel文件重新另存為了一個excel,便運行成功了。他們的excel問題如下圖。
損壞后還可以打開
讀到這里,這篇“怎么利用純C語言對EXCEL進行讀寫操作”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
本文題目:怎么利用純C語言對EXCEL進行讀寫操作
網站路徑:http://www.rwnh.cn/article22/jgjpjc.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、面包屑導航、自適應網站、網站內鏈、網頁設計公司、網站維護
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)