我有一组EXCEL表格数据,现在把它保存为.txt或.xls文件,现在的任务是读取文件的内容,然后把它格式化显示在视图中。集思广益,参与有分!如
在excel 中
-------------------------------
23 | 234 | 345| 87 |
--------------------------------
75 | 123 | 33 | 32 |
--------------------------------
在视图中输出格式类似
在excel 中
-------------------------------
23 | 234 | 345| 87 |
--------------------------------
75 | 123 | 33 | 32 |
--------------------------------
在视图中输出格式类似
if(!inFile.Open("C:\\test.txt",CFile::modeRead|CFile::typeText))
return;
CString str;
char buff[256];
char seps[] = " |";//按空格" ",和"|"作为分割符提取内容
char *token = NULL;
while(inFile.ReadString(str))//按行读取内容
{
::lstrcpy(buff,str);
token = strtok(buff,seps);
while(token!=NULL)
{
//这里token指向本次提取的内容
//第一次是23
//第二次是234
//第三次是345
//...
token = strtok(NULL,seps);
}}
CDatabase database;
CString sSql;
CString sDriver;
CString sDsn;
CString sFile; //你的excel文件路径,最好用CFileDialog得到
int m_dTotalColumns = 0; //列数
CString sExcelDrive;
sFile = m_FinalWage ;
// 是否安装有Excel驱动 "Microsoft Excel Driver (*.xls)"
sExcelDrive = GetExcelDriver();
if (sExcelDrive.IsEmpty())
{
AfxMessageBox(" not find Excel driver!");
return;
}
sDsn.Format("ODBC;DRIVER={%s};DSN='';DBQ=%s",sDriver,sFile); try
{
// 打开数据库(即Excel文件)
database.Open(NULL, false, false, sDsn);
CRecordset rs(&database); // 设置读取的查询语句.
sSql.Format("SELECT * FROM [%s$A1:IV65536]", sheetname);
rs.Open( CRecordset::forwardOnly,sSql,CRecordset::readOnly);
CString sFieldValue;
m_dTotalColumns = m_rSheet->m_nResultCols; // Get number of columns
while (rs.IsEof())
{
for (short column = 0; column < m_dTotalColumns; column++)
{
rs->GetFieldValue(column, sFieldValue);
//
//在这里你可以将读出的数据用CDC向视图中画了
//
}
}
}
catch (...)
{
}
然后一个一个插入List中.