请教高手指点!紧急!

panacea 2000-01-14 03:44:00
我想从一个Excel文件中读取数据,请指点以下该如何着手?
...全文
267 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
panacea 2000-01-18
  • 打赏
  • 举报
回复
kxy:我没有找到Ole Object Excel,你指的是VC6.0里的吗?如何创建它呢?
有没有相关的coding可供参考?如有,能否mail给我,panacea_yang@sina.com
kxy 2000-01-17
  • 打赏
  • 举报
回复
Excel本身是一个ole自动化服务器,和你打开的文件有什么关系.
在你的程序中创建一个Ole Object Execel的,通过这个Object来
打开你的execl文件.
panacea 2000-01-17
  • 打赏
  • 举报
回复
SoftDIY:我怎么进入www.codetool.com的database呀?没找到
panacea 2000-01-17
  • 打赏
  • 举报
回复
但是我每次调的Excel文件是不定的,好象无法使用ODBC吧,请问KXY,使用哪个COM的Interface呢?
SoftDIY 2000-01-14
  • 打赏
  • 举报
回复
www.codetool.com 的database有如何读excel文件的article,使用odbc
ljunfa 2000-01-14
  • 打赏
  • 举报
回复
应用VBA编程技术,看看书,如果仅仅是读数据,很简单
kxy 2000-01-14
  • 打赏
  • 举报
回复
用OBDC也可.
jing 2000-01-14
  • 打赏
  • 举报
回复
上面的程序有该动
/* To compile, type: CL AGES.C ODBC32.LIB */

#include <windows.h>
#include <sql.h>
#include <sqlext.h>
#include <string.h>

#define CONNSTR "DBQ=AGES.XLS;DRIVER={Microsoft Excel Driver (*.xls)}"
#define CONNLEN (sizeof(CONNSTR)-1)
#define SQLTRY(x,y) \
{ \
rc = y; \
if (rc != SQL_SUCCESS) \
{ \
char szState[6]; \
char szMsg[255]; \
SDWORD sdwNative; \
SWORD swMsgLen; \
SQLError(hEnv, hDBC, hStmt, szState, &sdwNative, szMsg, sizeof(szMsg), &swMsgLen); \
printf("Error %d performing %s\nSQLState = %s\nSQL message = %s\n", rc, x, szState, szMsg); \
goto Terminate; \
} \
}

void main(void)
{
SQLHENV hEnv = 0;
SQLHDBC hDBC = 0;
SQLHSTMT hStmt = 0;
SQLCHAR szConnStr[255];
SQLCHAR szStmt[255];
SQLCHAR szFirstName[255];
SQLCHAR szLastName[255];
long nAge;
SWORD cbConnStr;
RETCODE rc;
SDWORD sdwLNLen;
SDWORD sdwFNLen;
SDWORD sdwALen;
int i;
char szResult[1000];

SQLTRY("SQLAllocEnv", SQLAllocEnv(&hEnv))
SQLTRY("SQLAllocConnect", SQLAllocConnect(hEnv, &hDBC))
SQLTRY("SQLDriverConnect", SQLDriverConnect(hDBC, NULL, CONNSTR, CONNLEN, szConnStr, sizeof(szConnStr), &cbConnStr, SQL_DRIVER_NOPROMPT))
SQLTRY("SQLAllocStmt", SQLAllocStmt(hDBC, &hStmt))

sprintf(szStmt, "SELECT * FROM [Sheet1$]");
SQLTRY("SQLPrepare", SQLPrepare(hStmt, szStmt, strlen(szStmt)))

SQLTRY("SQLBindCol", SQLBindCol(hStmt, 1, SQL_C_CHAR, (PTR)szLastName, sizeof(szLastName), &sdwLNLen))
SQLTRY("SQLBindCol", SQLBindCol(hStmt, 2, SQL_C_CHAR, (PTR)szFirstName, sizeof(szFirstName), &sdwFNLen))
SQLTRY("SQLBindCol", SQLBindCol(hStmt, 3, SQL_C_SLONG, (PTR)&nAge, sizeof(nAge), &sdwALen))

SQLTRY("SQLExecute", SQLExecute(hStmt))

for (i = 1; (rc = SQLFetch(hStmt)) == SQL_SUCCESS; i++)
{
printf("Record #%d\tLast Name: %s\tFirst Name: %s\tAge: %d\n", i, szLastName, szFirstName, nAge);
}
if (rc != SQL_NO_DATA_FOUND)
{
SQLTRY("SQLFetch", rc)
}

printf("Successfully completed.\n");
SQLCloseCursor(hStmt);
Terminate:
if (hStmt) SQLFreeStmt(hStmt, SQL_DROP);
if (hDBC) SQLDisconnect(hDBC);
if (hDBC) SQLFreeConnect(hDBC);
if (hEnv) SQLFreeEnv(hEnv);
}
jing 2000-01-14
  • 打赏
  • 举报
回复
可不可以用数据库
h file
#define CONNSTR "DBQ=F:\\beproject.mdb;DRIVER={Microsoft Access Driver (*.mdb)}"
#define CONNLEN (sizeof(CONNSTR)-1)
#define SQLTRY(x,y) \
{ \
rc = y; \
if (rc != SQL_SUCCESS) \
{ \
char szState[6]; \
char szMsg[255]; \
SDWORD sdwNative; \
SWORD swMsgLen; \
SQLError(hEnv, hDBC, hStmt, szState, &sdwNative, szMsg, sizeof(szMsg), &swMsgLen); \
printf("Error %d performing %s\nSQLState = %s\nSQL message = %s\n", rc, x, szState, szMsg); \
goto Terminate;\
} \
}

c file

#include "database.h"

LPSTR DataFind(LPSTR UN)
{
SQLHENV hEnv = 0;
SQLHDBC hDBC = 0;
SQLHSTMT hStmt = 0;
SQLCHAR szConnStr[255];
SQLCHAR szStmt[255];

SQLCHAR szUserName[20];
SQLCHAR szSex[2];
SQLCHAR szAge[5];
SQLCHAR szHeight[5];
SQLCHAR szWeight[5];
SQLCHAR szFashion[5];
SQLCHAR szAction[5];



SWORD cbConnStr;
RETCODE rc;
SDWORD sdwUNLen;
SDWORD sdwUILen;


int i;

char szResult[1000];
char szSend[1000];



SQLTRY("SQLAllocEnv", SQLAllocEnv(&hEnv))
SQLTRY("SQLAllocConnect", SQLAllocConnect(hEnv, &hDBC))


SQLTRY("SQLDriverConnect", SQLDriverConnect(hDBC, NULL, CONNSTR, CONNLEN, szConnStr, sizeof(szConnStr), &cbConnStr, SQL_DRIVER_NOPROMPT))


SQLTRY("SQLAllocStmt", SQLAllocStmt(hDBC, &hStmt))

sprintf(szStmt, "SELECT User_Name, Sex, Age, Height, Weight, Fashion, action_id FROM `User`");
SQLTRY("SQLPrepare", SQLPrepare(hStmt, szStmt, strlen(szStmt)))


SQLTRY("SQLBindCol", SQLBindCol(hStmt, 1, SQL_C_CHAR, (PTR)szUserName, sizeof(szUserName), &sdwUNLen))
SQLTRY("SQLBindCol", SQLBindCol(hStmt, 2, SQL_C_CHAR, (PTR)szSex, sizeof(szSex),&sdwUILen))


SQLTRY("SQLBindCol", SQLBindCol(hStmt, 3, SQL_C_CHAR, (PTR)szAge, sizeof(szAge), &sdwUILen))
SQLTRY("SQLBindCol", SQLBindCol(hStmt, 4, SQL_C_CHAR, (PTR)szHeight, sizeof(szHeight), &sdwUILen))
SQLTRY("SQLBindCol", SQLBindCol(hStmt, 5, SQL_C_CHAR, (PTR)szWeight, sizeof(szWeight), &sdwUILen))
SQLTRY("SQLBindCol", SQLBindCol(hStmt, 6, SQL_C_CHAR, (PTR)szFashion, sizeof(szFashion), &sdwUILen))
SQLTRY("SQLBindCol", SQLBindCol(hStmt, 7, SQL_C_CHAR, (PTR)szAction, sizeof(szAction), &sdwUILen))

SQLTRY("SQLExecute", SQLExecute(hStmt))

for (i = 1; (rc = SQLFetch(hStmt)) == SQL_SUCCESS; i++)
{
//printf("Record #%d\tUser Name: %s Sex: %s\t\n",
//i, szUserName,szSex);
//printf("Age:%s\t Height:%s\t Weight:%s\t Fashion:%s\t Action:%s\n\n",
//szAge,szHeight,szWeight,szFashion,szAction);

if (!strcmp((LPSTR)szUserName,UN))
{

strcpy(szSend,"[");
strcat(szSend,szSex);
strcat(szSend,szAge);
strcat(szSend,szHeight);
strcat(szSend,szWeight);
strcat(szSend,szFashion);
strcat(szSend,szAction);
strcat(szSend,"]");

SQLDisconnect(hDBC);
return szSend;

//printf("%s %d\n",szSend,strlen(szSend));

}

}
if (rc != SQL_NO_DATA_FOUND)
{
SQLTRY("SQLFetch", rc)

}

//printf("Successfully completed.\n");
SQLCloseCursor(hStmt);


Terminate:
if (hStmt) SQLFreeStmt(hStmt, SQL_DROP);
if (hDBC) SQLDisconnect(hDBC);
if (hDBC) SQLFreeConnect(hDBC);
if (hEnv) SQLFreeEnv(hEnv);
SQLDisconnect(hDBC);

return "?";
}
kxy 2000-01-14
  • 打赏
  • 举报
回复
用COM应用程序,Ole

16,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧