怎么用CC++语言读取excel文件的某一行某一列

怎么用CC++语言读取excel文件的某一行某一列,第1张

1 使用的命名空间为:using SystemDataOleDb;

2 连接数据库的字符串为:

string myConn="Provider=MicrosoftJetOLEDB40;Data Source=d:\\

目录xls;Extended Properties=\"Excel 80;HDR=No;IMEX=1\"";

xsl可以认为是数据库了,HDR表示是否隐藏excel的第一行(因为第一行一般表示字段名称)

IMEX 参数,因为不同的模式代表著不同的读写行为:当IMEX=0 时为“汇出模式”,这个模式开启的 Excel 档案只能用来做“写入”用途。

当 IMEX=1 时为“汇入模式”,这个模式开启的 Excel 档案只能用来做“读取”用途。当 IMEX=2 时为“连结模式”,这个模式开启的 Excel 档案可同时支援“读取”与“写入”用途。

3OleDbConnection myConnection = new OleDbConnection(myConn);

4string mySQLstr = "SELECT f1,f2,f5 FROM [Sheet1$]";

//[Sheet1$]就是表格了,选取第1,2,5列,用Fn表示第n列5 OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(mySQLstr, myConnection);6 DataSet myDS = new DataSet();7 myDataAdapterFill(myDS, "[Sheet1$]");

//原理都跟读取sql是一样

DataTable dt = myConnectionGetOleDbSchemaTable(SystemDataOleDbOleDbSchemaGuidTables, null);

//把相关信息记录到datatable中

string tbname = dtRows[0][2]ToString()Trim();

//读取表名信息注意由于excel每个单元格内数据默认的格式为:varchar(255),因此读取超过255的单元格内容是需要修改注册表,这里提供修改方法:Windows Registry Editor Version 500[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\40\Engines\Excel]"TypeGuessRows"="0"表示从前TypeGuessRows行判断数据的类型。

简单的方法是通过ODBC来实现:

具体实现

一、 包含Excel文件 *** 作类头文件

#include "CSpreadSheeth"

二、 新建Excel文件,并写入默认数据

// 新建Excel文件名及路径,TestSheet为内部表名

CSpreadSheet SS("c:\\Testxls", "TestSheet");

CStringArray sampleArray, testRow;

SSBeginTransaction();

// 加入标题

sampleArrayRemoveAll();

sampleArrayAdd("姓名");

sampleArrayAdd("年龄");

SSAddHeaders(sampleArray);

// 加入数据

CString strName[] = {"徐景周","徐志慧","郭徽","牛英俊","朱小鹏"};

CString strAge[] = {"27","23","28","27","26"};

for(int i = 0; i < sizeof(strName)/sizeof(CString); i++)

{

sampleArrayRemoveAll();

sampleArrayAdd(strName[i]);

sampleArrayAdd(strAge[i]);

SSAddRow(sampleArray);

}

SSCommit();

三、 读取Excel文件数据

CSpreadSheet SS("c:\\Testxls", "TestSheet");

CStringArray Rows, Column;

//清空列表框

m_AccessListResetContent();

for (int i = 1; i <= SSGetTotalRows(); i++)

{

// 读取一行

SSReadRow(Rows, i);

CString strContents = "";

for (int j = 1; j <= RowsGetSize(); j++)

{

if(j == 1)

strContents = RowsGetAt(j-1);

else

strContents = strContents + " --> " + RowsGetAt(j-1);

}

m_AccessListAddString(strContents);

}

先要确定你使用哪个框架来 *** 作EXCEL,aspose、NPOI都很好用,你先每列的第一个单元格检查是否有数据,如果没有就终止检查,找到第一个单元格是非空的那些列以后,再逐行的单元格检查,看那些行没有数据,检查到单元格为空就退出当前列

以上就是关于怎么用C/C++语言读取excel文件的某一行某一列全部的内容,包括:怎么用C/C++语言读取excel文件的某一行某一列、怎样在Excel中添加用c语言编写的程序、如何将C语言的输出倒入Excel工作表等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/10153225.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存