
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工作表等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)