EXCEL表格里本来有四条记录并且能够导入到成功,可是在EXCEL表格里将记录数增加到30条,再执行程序的时候,只能导入十条左右,然后就运行出错了,为什么?????
解决方案 »
- 鼠标钩子程序在某WIN7系统下的某程序区域失效的问题
- 请问在用Hook的时候,如何判断鼠标是否在标题栏上?
- 困扰我一天的问题,各位大虾帮帮忙
- 急求有关中国象棋游戏编程资料!谢谢!
- vc++ com 和 javascript 高手 请进
- DLL注册失败?????
- 请教各位朋友,我想用MsFlexGrid显示一个1百万行的表格,请问怎样控制它的纵向滚动条,谢谢!(在线等待)
- 请问:VC中怎么实现配置文件的读取?
- 有关VC的报表设计和打印
- error C2501: '__ss_family' : missing storage-class or type specifiers
- MFC添加工程向导问题
- 求教 BitBlt用小图块贴全图方法
void CMaindlg::OnPutin()
{
// TODO: Add your control notification handler code here
CFileDialog FileDlg(TRUE);
FileDlg.m_ofn.lpstrTitle="Choose The File You Want To Open!";
FileDlg.m_ofn.lpstrFilter="Text File(*.xls)\0*.xls\0All File(*.*)\0*.*\0\0";
FileDlg.m_ofn.lpstrDefExt="xls";
CString FileDirect;
if(IDOK==FileDlg.DoModal())
{
FileDirect=FileDlg.GetFileName();
}
CoInitialize(NULL);
//定义变量
_Application excelapp;
Workbooks books;
_Workbook book;
Sheets sheets;
_Worksheet sheet;
Range range;
Range usedRange;
LPDISPATCH lpDisp;
COleVariant vResult;
COleVariant
covTrue((short)TRUE),
covFalse((short)FALSE),
covOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
if(!excelapp.CreateDispatch("Excel.Application"))
{
MessageBox("确认是否安装了Excel");
}
books.AttachDispatch(excelapp.GetWorkbooks());
CString strtext="G:\\毕业设计\\c++\\背景\\dri\\"+FileDirect;
//打开Excel
lpDisp = books.Open(strtext,
covOptional, covOptional, covOptional, covOptional, covOptional,
covOptional, covOptional, covOptional, covOptional, covOptional,
covOptional, covOptional, covOptional, covOptional); book.AttachDispatch(lpDisp);
sheets.AttachDispatch(book.GetWorksheets());
lpDisp=book.GetActiveSheet();
sheet.AttachDispatch(lpDisp);
//读取已经使用区域的信息,包括已经使用的行数,列数,起始行,起始列
usedRange.AttachDispatch(sheet.GetUsedRange());
range.AttachDispatch(usedRange.GetRows());
long iRowNum=range.GetCount();//取得已经使用的行数
range.AttachDispatch(usedRange.GetColumns());
long iColNum=range.GetCount();//取得已经使用的列数
long iStartRow=usedRange.GetRow();//取得已经使用区域的起始行,从一开始
long iStartCol=usedRange.GetColumn();//取得已经使用区域的起始列,从一开始
UpdateData(true);
ADOConn m_AdoConn;
m_AdoConn.OnInitADOConn();
CString student[10][10];
_bstr_t sql,sql1,sql2,sql3,sql4;
sql1="create table 报名表(编号 int ,姓名 char(30),性别 char(30),准考证号 char(30)PRIMARY KEY,邮箱 char(30),学院 char(30),级别 char(30),科目 char(30))";
m_AdoConn.ExecuteSQL(sql1);
for(int i=iStartRow;i<=iRowNum;i++)
{
for(int j=iStartCol;j<=iColNum;j++)
{
//读取单元格的值
range.AttachDispatch(sheet.GetCells());
range.AttachDispatch(range.GetItem(COleVariant((long)i),COleVariant((long)j)).pdispVal);
vResult =range.GetValue2(); CString str,stry,strm,strd;
SYSTEMTIME st;
if(vResult.vt==VT_BSTR)//字符
{
str=vResult.bstrVal;
}
else if(vResult.vt==VT_R8)
{
str.Format("%f",vResult.dblVal);
}
else if(vResult.vt==VT_DATE)//时间格式
{
VariantTimeToSystemTime(vResult.date,&st);
stry.Format("%d",st.wYear);
strm.Format("%d",st.wMonth);
strd.Format("%d",st.wDay);
str=stry+"-"+strm+"-"+strd;
}
else if(vResult.vt==VT_EMPTY)//单元格为空
{
str="";
}
student[i-1][j-1]=str;
}
sql="insert into 报名表(编号,姓名,性别,准考证号,邮箱,学院,级别,科目)values('"+student[i-1][0]+"','"+student[i-1][1]+"','"+student[i-1][2]+"','"+student[i-1][3]+"','"+student[i-1][4]+"','"+student[i-1][5]+"','"+student[i-1][6]+"','"+student[i-1][7]+"')";
m_AdoConn.ExecuteSQL(sql); }