excel row number
场景:datagrid控件显示的内容导入Excel时报错"Invalid row number"该怎么解决
datagrid控件显示的内容导入Excel时报错"Invalid row number"
用VC把datagrid控件显示的内容导入Excel时出现如下错误 "Invalid row number "。请各位大侠们帮帮忙,不甚感激!
程序代码如下:
void CExcelDlg::OnOK()
{
// TODO: Add extra validation here
COleVariant VOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
_Application objApp;
Workbooks objBooks;
_Workbook objBook;
Worksheets objSheets;
_Worksheet objSheet;
Range objRange;
objApp.CreateDispatch(“Excel.Application“);
objBooks=objApp.GetWorkbooks(); //返回工作簿对象
// 打开指定Excel文件
objBook.AttachDispatch(objBooks.Add(_variant_t(“E:\\刘记\\VC\\Excel\\Report1.xls“)));
objSheets=objBook.GetSheets();
// 定义第一个Sheet为对象
objSheet=objSheets.GetItem((_variant_t)short(1));
objRange.AttachDispatch(objSheet.GetCells(),true);
// 取得结果集中记录个数,列数
int ss,nn;
double dTotal;
dTotal = 0;
CString cc;
// 得到结果集中记录个数
nn = m_adodc.GetRecordset().GetRecordCount();
// 定义列对象并取得列的个数
CColumns cls;
cls = m_DataGrid.GetColumns();
ss = cls.GetCount();
// 双层循环取得所有数据放入Excel表中
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==1)
dTotal = dTotal + atoi(cc);
// 把列值放入Excel指定单元格
// if(cc!=““)
{
objRange.SetItem(_variant_t((long)(i+2)),_variant_t((long)(j+1)),_variant_t(cc));
}
}
}
// 设置Excel为可见
objApp.SetVisible(true);
// 释放句柄
objRange.ReleaseDispatch();
objSheet.ReleaseDispatch();
objSheets.ReleaseDispatch();
objBook.ReleaseDispatch();
objBooks.ReleaseDispatch();
objApp.ReleaseDispatch();
}
本人QQ:95137880 在线急等
------解决方案--------------------
记录集的记录数应该通过循环记录统计出来。
datagrid控件显示的内容导入Excel时报错"Invalid row number"
用VC把datagrid控件显示的内容导入Excel时出现如下错误 "Invalid row number "。请各位大侠们帮帮忙,不甚感激!
程序代码如下:
void CExcelDlg::OnOK()
{
// TODO: Add extra validation here
COleVariant VOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
_Application objApp;
Workbooks objBooks;
_Workbook objBook;
Worksheets objSheets;
_Worksheet objSheet;
Range objRange;
objApp.CreateDispatch(“Excel.Application“);
objBooks=objApp.GetWorkbooks(); //返回工作簿对象
// 打开指定Excel文件
objBook.AttachDispatch(objBooks.Add(_variant_t(“E:\\刘记\\VC\\Excel\\Report1.xls“)));
objSheets=objBook.GetSheets();
// 定义第一个Sheet为对象
objSheet=objSheets.GetItem((_variant_t)short(1));
objRange.AttachDispatch(objSheet.GetCells(),true);
// 取得结果集中记录个数,列数
int ss,nn;
double dTotal;
dTotal = 0;
CString cc;
// 得到结果集中记录个数
nn = m_adodc.GetRecordset().GetRecordCount();
// 定义列对象并取得列的个数
CColumns cls;
cls = m_DataGrid.GetColumns();
ss = cls.GetCount();
// 双层循环取得所有数据放入Excel表中
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==1)
dTotal = dTotal + atoi(cc);
// 把列值放入Excel指定单元格
// if(cc!=““)
{
objRange.SetItem(_variant_t((long)(i+2)),_variant_t((long)(j+1)),_variant_t(cc));
}
}
}
// 设置Excel为可见
objApp.SetVisible(true);
// 释放句柄
objRange.ReleaseDispatch();
objSheet.ReleaseDispatch();
objSheets.ReleaseDispatch();
objBook.ReleaseDispatch();
objBooks.ReleaseDispatch();
objApp.ReleaseDispatch();
}
本人QQ:95137880 在线急等
------解决方案--------------------
记录集的记录数应该通过循环记录统计出来。