c++ datagrid导出excel 出现 row number错误
各位大虾 看看那里出错了呢?
void CAssetDlg::OnReportToExcel()
{
//连接数据库
ADOConn m_AdoConn;
m_AdoConn.OnInitADOConn();
int structsize;
DWORD dwVersion;
dwVersion=GetVersion();
if(dwVersion<0x80000000)
structsize=88;
else
structsize=76;
// 提取数据库中工资统计表的此月份记录
//定义操作Excel必要的对象
COleVariant VOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
_Application objApp;
Workbooks objBooks;
_Workbook objBook;
Worksheets objSheets;
_Worksheet objSheet;
Range objRange;
//创建Excel对象
objApp.CreateDispatch("Excel.Application");
objBooks=objApp.GetWorkbooks(); //返回工作簿对象
// 打开指定Excel文件
CString path;
// 获取当前应用程序的完整文件名,包含完整路径
GetModuleFileName(NULL, path.GetBufferSetLength(MAX_PATH+1),MAX_PATH);
// 取得最后一个\,去掉文件名,从而获取当前应用程序的工作路径
int pos = path.ReverseFind('\\');
path = path.Left(pos+1);
// 在当前应用程序的工作路径下打开Report.xls文件
objBook.AttachDispatch(objBooks.Add(_variant_t(path + "Report.xls")));
objSheets=objBook.GetSheets();
// 定义第一个Sheet为对象
objSheet=objSheets.GetItem((_variant_t)short(1));
objRange.AttachDispatch(objSheet.GetCells(),true);
int ss,nn;
double dTotal(0);
CString cc;
nn=m_Adodc.GetRecordset().GetRecordCount();
CColumns cls;
cls=m_DataGrid.GetColumns();
ss=cls.GetCount();
for(int i=0;i<nn;i++)
{
m_DataGrid.SetRow(i);
for(int j=0;j<ss;j++)
{
m_DataGrid.SetCol(j);
cc=m_DataGrid.GetText();
// if(j==9)
// dTotal=dTotal+atoi(cc);
objRange.SetItem(_variant_t((long)(i+5)),_variant_t((long)(j+1)),_variant_t(cc));
}
}
// 设置Excel为可见
objApp.SetVisible(true);
// 释放句柄
objRange.ReleaseDispatch();
objSheet.ReleaseDispatch();
objSheets.ReleaseDispatch();
objBook.ReleaseDispatch();
objBooks.ReleaseDispatch();
objApp.ReleaseDispatch();
}