如何用C语言实现读取excel文件中的数据呢?

作者&投稿:费妍 (若有异议请与网页底部的电邮联系)
C语言读取excel文件的数据~

简单的方法是通过ODBC来实现:
具体实现
一、 包含Excel文件操作类头文件
#include "CSpreadSheet.h"
二、 新建Excel文件,并写入默认数据
// 新建Excel文件名及路径,TestSheet为内部表名
CSpreadSheet SS("c:\\Test.xls", "TestSheet");

CStringArray sampleArray, testRow;

SS.BeginTransaction();

// 加入标题
sampleArray.RemoveAll();
sampleArray.Add("姓名");
sampleArray.Add("年龄");
SS.AddHeaders(sampleArray);

// 加入数据
CString strName[] = {"徐景周","徐志慧","郭徽","牛英俊","朱小鹏"};
CString strAge[] = {"27","23","28","27","26"};
for(int i = 0; i < sizeof(strName)/sizeof(CString); i++)
{
sampleArray.RemoveAll();
sampleArray.Add(strName[i]);
sampleArray.Add(strAge[i]);
SS.AddRow(sampleArray);
}

SS.Commit();

三、 读取Excel文件数据
CSpreadSheet SS("c:\\Test.xls", "TestSheet");

CStringArray Rows, Column;

//清空列表框
m_AccessList.ResetContent();
for (int i = 1; i <= SS.GetTotalRows(); i++)
{
// 读取一行
SS.ReadRow(Rows, i);
CString strContents = "";
for (int j = 1; j <= Rows.GetSize(); j++)
{
if(j == 1)
strContents = Rows.GetAt(j-1);
else
strContents = strContents + " --> " + Rows.GetAt(j-1);
}

m_AccessList.AddString(strContents);
}

简单的方法是通过ODBC来实现:
具体实现
一、 包含Excel文件操作类头文件 #include "CSpreadSheet.h"
二、 新建Excel文件,并写入默认数据 // 新建Excel文件名及路径,TestSheet为内部表名 CSpreadSheet SS("c:\\Test.xls", "

基本思路
基础实现方法同上篇文章《直接通过ODBC读、写Excel表格文件》相同,都是通过ODBC来把Excel表格文件当成数据库文件来进行读、写等操作,所以在Excel表格文件中写入的行头名必须是唯一的(不要重名,相当于数据库中的ID值)。本文中对Excel文件的操作都被封装进一个类CSpreadSheet中,通过它我们可以非常简便的实现各种Excel表格数据操作,并且可以对该类进行扩充来满足自己的需求。
具体实现

一、 包含Excel文件操作类头文件
#include "CSpreadSheet.h"
二、 新建Excel文件,并写入默认数据
// 新建Excel文件名及路径,TestSheet为内部表名
CSpreadSheet SS("c:\\Test.xls", "TestSheet");

CStringArray sampleArray, testRow;

SS.BeginTransaction();

// 加入标题
sampleArray.RemoveAll();
sampleArray.Add("姓名");
sampleArray.Add("年龄");
SS.AddHeaders(sampleArray);

// 加入数据
CString strName[] = {"徐景周","徐志慧","郭徽","牛英俊","朱小鹏"};
CString strAge[] = {"27","23","28","27","26"};
for(int i = 0; i < sizeof(strName)/sizeof(CString); i++)
{
sampleArray.RemoveAll();
sampleArray.Add(strName[i]);
sampleArray.Add(strAge[i]);
SS.AddRow(sampleArray);
}

SS.Commit();

三、 读取Excel文件数据
CSpreadSheet SS("c:\\Test.xls", "TestSheet");

CStringArray Rows, Column;

//清空列表框
m_AccessList.ResetContent();
for (int i = 1; i <= SS.GetTotalRows(); i++)
{
// 读取一行
SS.ReadRow(Rows, i);
CString strContents = "";
for (int j = 1; j <= Rows.GetSize(); j++)
{
if(j == 1)
strContents = Rows.GetAt(j-1);
else
strContents = strContents + " --> " + Rows.GetAt(j-1);
}

m_AccessList.AddString(strContents);
}

四、 对已存在Excel表格数据进行添加、插入、替换操作
// 初始化测试行数据,进行添加、插入及替换数据操作演示
for (int k = 1; k <= 2; k++)
{
testRow.Add("Test");
}

SS.AddRow(testRow); // 添加到尾部
SS.AddRow(testRow, 2); // 插入新行到第二行
SS.AddRow(testRow, 6, true); // 替换原第四行来新的内容
SS.AddCell("徐景周", 1,2); // 添加(不存在)或替换(存在)第二行,第一列单元格内容

SS.Commit();
五、 对已存在Excel表格数据进行行、列、单元格查询
void CExcelAccessDlg::OnQuery()
{
CSpreadSheet SS("c:\\Test.xls", "TestSheet");

CStringArray Rows, Column;
CString tempString = "";

UpdateData();

if(m_strRow == "" && m_strColumn == "") // 查询为空
{
AfxMessageBox("行号、列号不能同时为空!");
return;
}
else if(m_strRow == "" && m_strColumn != "") // 查询指定列数据
{
int iColumn = atoi(m_strColumn);
int iCols = SS.GetTotalColumns();
if(iColumn > iCols) // 超出表范围查询时
{
CString str;
str.Format("表中总列数为: %d, ", iCols);
AfxMessageBox(str + " 查询列数大于Excel表中总列数,请重新输入!");
return;
}

// 读取一列数据,并按行读出
if(!SS.ReadColumn(Column, iColumn))
{
AfxMessageBox(SS.GetLastError());
return;
}

CString tmpStr;
for (int i = 0; i < Column.GetSize(); i++)
{
tmpStr.Format("行号: %d, 列号: %d ,内容: %s\n", i+1,iColumn,Column.GetAt(i));
tempString += tmpStr;
}

AfxMessageBox(tempString);
}
else if(m_strRow != "" && m_strColumn == "") // 查询指定行数数据
{
int iRow = atoi(m_strRow);
int iRows = SS.GetTotalRows();

if(iRow > iRows) // 超出表范围查询时
{
CString str;
str.Format("表中总行数为: %d, ", iRows);
AfxMessageBox(str + " 查询行数大于Excel表中总行数,请重新输入!");
return;
}

// 读取指定行数据
if(!SS.ReadRow(Rows, iRow))
{
AfxMessageBox(SS.GetLastError());
return;
}

CString tmpStr;
for (int i = 0; i < Rows.GetSize(); i++)
{
tmpStr.Format("行号: %d, 列号: %d ,内容: %s\n", iRow, i+1, Rows.GetAt(i));
tempString += tmpStr;
}

AfxMessageBox(tempString);
}
else if(m_strRow != "" && m_strColumn != "") // 查询指定单元格数据
{
int iRow = atoi(m_strRow), iColumn = atoi(m_strColumn);
int iRows = SS.GetTotalRows(), iCols = SS.GetTotalColumns();

if(iColumn > iCols) // 超出表范围查询时
{
CString str;
str.Format("表中总列数为: %d, ", iCols);
AfxMessageBox(str + " 查询列数大于Excel表中总列数,请重新输入!");
return;
}
else if(iRow > iRows)
{
CString str;
str.Format("表中总行数为: %d, ", iRows);
AfxMessageBox(str + " 查询行数大于Excel表中总行数,请重新输入!");
return;
}

// 读取指定行、列单元格数据
if(!SS.ReadCell(tempString, iColumn, iRow))
{
AfxMessageBox(SS.GetLastError());
return;
}

CString str;
str.Format("行号: %d, 列号: %d ,内容: %s", iRow,iColumn,tempString);
AfxMessageBox(str);
}

}

六、 将存在的Excel转换另存为指定分隔的文本文件
// 将原Excel文件转换为用分号分隔的文本,并另存为同名文本文件
SS.Convert(";");
七、 删除Excel中表格
SS. DeleteSheet(); // 删除Excel文件中所有表格
SS. DeleteSheet(" TestSheet "); // 删除Excel中TextSheet表格
八、 获取Excel中总行数、总列数、当前行
int iCols = SS.GetTotalColumns(); // 总列数
int iRows = SS.GetTotalRows(); // 总行数
int iCurRow = SS.GetCurrentRow(); // 当前所在行号
九、 获取行头数据
CStringArray rowHeader;
SS.GetFieldNames(rowHeader);
CString tmpStr;
for (int i = 0; i < rowHeader.GetSize(); i++)
{
tmpStr.Format("行号: %d, 列号: %d ,内容: %s\n", 1, i+1, rowHeader.GetAt(i));
tempString += tmpStr;
}
AfxMessageBox(tempString);

最后,如果想知道详细实现细节的话,可以在下载示例源码后,仔细查看源码既可(内有详细注释)。

自己去读Excel文件我估计几乎是不可能的,可以借助Excel提供的数据库驱动程序以数据库的形式去访问,但用纯C语言穿靴戴帽的代码较多,用C++估计简便点,网上很容易搜到。


怎样用c语言编写代码,用于读取文本内容在屏幕上输出?
char buffer[256];\\x0d\\x0aif ( fp=fopen("data.txt","r") ) {\\x0d\\x0awhile ( !feof(fp) ) {\\x0d\\x0afgets(buffer,255,fp); printf("%s\\n",buffer);\\x0d\\x0a}\\x0d\\x0afclose(fp);\\x0d\\x0a} else printf("无法打开文本文件读取。\\n");\\x0d\\x0a} ...

如何用C语言读写文件
c语言读写文件程序:include "stdio.h"include <stdlib.h>main(){ FILE *fp1;\/\/定义文件流指针,用于打开读取的文件 FILE *fp2;\/\/定义文件流指针,用于打开写操作的文件 char text[1024];\/\/定义一个字符串数组,用于存储读取的字符 fp1 = fopen("d:\\\\a.txt","r");\/\/只读方式打开文件a....

如何用c语言从txt文件中读取数据
用C语言从txt文件中读取数据,可以使用C标准库文件自带的文件接口函数进行操作。一、打开文件:FILE fopen(const char filename,const char mode);因为txt文件为文本文件,所以打开时选择的mode应为"r"或者"rt"。二、读取文件:读取文件应根据文件内容的格式,以及程序要求,选择读取文件的函数。可以使用...

怎么用C语言写一个程序,能让他从一个.txt文件中读取信息,如:我的桌面...
很简单的 include <stdio.h> void main(){ FILE *fp; \/\/定义一个文件指针访问文件 fp = fopen("a.txt","r"); \/\/打开文件,前一个参数为文件路径名,后一个参数访问方式,读取read while(fgetc(fp)!=EOF) \/\/逐个字符读取文件内容 { \/\/对其做相关处理 } fclose(fp); \/\/关...

C语言怎么读取txt文件?
C语言读写文件 一种是文本方式,另一种是2进制方式。日文,中文,unicode, 都要用2进制方式。文件内容 的编码 和编码的转化,同一种编码的大端或小端编码,都要自己安排处理。(1)用2进制方式打开文件 (2)读\/写 UTF-8的编码文件 开头 有3 个特殊字节,数值是16进制: EF BB BF (3)UCS ...

C语言中如何从文件读取
defin N 7 \/*S中元素个数*\/ int function1(int s[]) {\/*定义计算众数的函数*\/} int function2(int s[]) {\/*定义计算重数的函数*\/} int main(){ FILE *fin,*fout;int i,S[N];fin=fopen("input.txt","r");\/*以只读方式打开文件*\/ fscanf(fin"%s"); \/*读取*\/ for(i=0...

c语言怎样按行读取
char *fgets(char *buf, int bufsize, FILE *fp);功能与gets类似,只是源不同。fgets从fp中读一行数据存到buf中,同时会判断bufsize,如果一行数据的长度超过了bufsize,那么只读入bufsize长度的数据,确保不会溢出。否则读取整行。由于在C语言中,标准输入stdin也是以文件指针形式存在的,所以gets可以用 ...

C语言中读取应该用什么语句呢,是printf还是scanf???
scanf() 是接受输入 printf()是打印输出的 举例scanf()和printf()的用法:include<stdio.h> void main(){ int a;printf("请输入一个值:");scanf("%d",&a);printf("您输入的值为:%d",a);exit(0);} 懂了吗?

c语言如何实现从文本文件里读取数字?
可以通过fscanf,从文件中依次读取数据。当fscanf返回EOF时,表示读到文件结尾,这时停止读取即可。以文件中存储的为空格分隔的整型字符为例,可以写作:while(fscanf(fp,"%d",&n) != EOF)\/\/从打开的文件指针fp指向的文件读数据,每次读一个整型,直至文件结尾。C语言是一门通用计算机编程语言,应用...

C语言中如何读取一个已知地址中储存的变数
C语言中,已知一个字串的地址,如何读取地址中的字串??急求! printf("%s",addr);可以直接显示字串 C语言中函式是如何储存的 1. 程式码本身是储存在记忆体的程式码段中的,而函式没有说储存的概念,函式呼叫时是通过栈来实现的。 2.在函式体内宣告的变数在预设情况下都是auto储存型别 ...

涧西区15675564393: 怎样用C语言读取excel文件 -
出禄哌拉: 简单的方法是通过ODBC来实现:具体实现 一、 包含Excel文件操作类头文件#include "CSpreadSheet.h" 二、 新建Excel文件,并写入默认数据// 新建Excel文件名及路径,TestSheet为内部表名 CSpreadSheet SS("c:\\Test.xls", "TestSheet...

涧西区15675564393: 如何用C语言实现读取excel文件中的数据呢? -
出禄哌拉: 基本思路 基础实现方法同上篇文章《直接通过ODBC读、写Excel表格文件》相同,都是通过ODBC来把Excel表格文件当成数据库文件来进行读、写等操作,所以在Excel表格文件中写入的行头名必须是唯一的(不要重名,相当于数据库中的ID值...

涧西区15675564393: 在C语言中,如何将EXCEL或者文档中的数据读入程序中? -
出禄哌拉: 1 使用的命名空间为:using System.Data.OleDb; 2 连接数据库的字符串为: string myConn="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\ 目录.xls;Extended Properties=\"Excel 8.0;HDR=No;IMEX=1\""; *.xsl可以认为是数据库了,...

涧西区15675564393: 如何用c语言提取excel中的数据 -
出禄哌拉: 1.方法一:采用OleDB读取EXCEL文件: <br>把EXCEL文件当做一个数据源来进行数据的读取操作,实例如下: <br>public DataSet ExcelToDS(string Path) <br><br>{ <br><br>string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +"Data ...

涧西区15675564393: 如何用C语言来读取EXCEL文件中的数据 -
出禄哌拉: 自己去读Excel文件我估计几乎是不可能的,可以借助Excel提供的数据库驱动程序以数据库的形式去访问,但用纯C语言穿靴戴帽的代码较多,用C++估计简便点,网上很容易搜到.

涧西区15675564393: 怎么用c语言打开excel? -
出禄哌拉: C语言打开Excel没有意义,因为它并不是标准的文本文件,如果你想要数据读取的话,建议选用Unicode格式文件或二进制文件,这样才方便你用C语言进行处理.希望能帮到你.

涧西区15675564393: c语言怎么从excel录入数据 -
出禄哌拉: c语言可以用fopen打开,fputc/fputs 写入,单元格用 '\t' 跳开.

涧西区15675564393: C语言读取excel文件的数据 -
出禄哌拉: 无解,excel格式不是公开的. 其他的解决方案是将 excel另存为 csv 格式,这是纯文本,然后用读文件的方式读入到数组.

涧西区15675564393: 如何用c语言读取excel文件里的数据 -
出禄哌拉: excel文件可以导成.txt格式

涧西区15675564393: C/C++如何读取Excel的数据,并进行操作? -
出禄哌拉: 1、Excel导出CSV或XML,C/C++作为文本/XML文件来读取. 2、在C/C++中使用COM,引用Microsoft Office Excel Library,通过WorkSheet接口来操作Excel工作表. 3、其它第三方的Excel操作库.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网