在网上搜到说可以用如下语句实现:
rg.AttachDispatch(ExcelApp.GetActiveCell());
rg.AttachDispatch(rg.GetEntireRow());
rg.Insert(vtMissing);
我实验后发现可行,它通过调用GetActiveCell获得当前选中行。
但我现在的关键问题是:我要对指定行(重点:指定行)来进行插入和删除,而不是Excel文件事先用鼠标选中的那一行。
找了很久,也没找到类似SetActiveCell这样的函数来设定当前选中行。
各位达人,帮帮小弟吧!不胜感激!!
rg.AttachDispatch(ExcelApp.GetActiveCell());
rg.AttachDispatch(rg.GetEntireRow());
rg.Insert(vtMissing);
我实验后发现可行,它通过调用GetActiveCell获得当前选中行。
但我现在的关键问题是:我要对指定行(重点:指定行)来进行插入和删除,而不是Excel文件事先用鼠标选中的那一行。
找了很久,也没找到类似SetActiveCell这样的函数来设定当前选中行。
各位达人,帮帮小弟吧!不胜感激!!
解决方案 »
- 求助!用VC++怎么实现matlab里的imfill函数?谢谢
- MFC组合框控件水平滚动问题
- 如何实现单击一下按钮,实现鼠标单击令一个程序菜单按钮并运行
- 着急啊,简单的问题,请问如何从窗口m_hWnd得到它的视图指针???
- 请帮忙解决下error LNK2001: unresolved external symbol
- 视图平移时出现问题,望高手指正!急急!
- ===如何实现这个功能!!!===
- 如何在数据库中用拼音模糊查询汉字?可行么?
- VC6在线程中对进度操作为什么会报错?
- 谁能推荐有关WIN32 ASM 书籍???
- spreadsheet11.0在vc6.0中使用时的问题
- 请大家说一下com的正确学习线路
然后录段宏看看用到什么函数
rngXls = rngXls.GetRange( COleVariant(_T(“A1“)),COleVariant(_T(“C5“)) );
GetRange我试过了,不起作用,最终插入的位置还是被鼠标选中的那行。
_Application ExcelApp;
_Workbook wbk;
Workbooks wbks;
_Worksheet wht;
Sheets whts;
LPDISPATCH lpDisp;
Range range;
COleVariant avar((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
if (!ExcelApp.CreateDispatch("Excel.Application",NULL))
{
AfxMessageBox("Excel Application error !");
}
CString strPath,str;
extern CString WorkDirectory;
strPath=WorkDirectory+"\\log\\EventLog.xlt";
wbks.AttachDispatch(ExcelApp.GetWorkbooks());
lpDisp=wbks.Open(strPath,avar,avar,avar,avar,avar,avar,avar,avar,avar,avar,avar,avar);
wbk.AttachDispatch(lpDisp);
whts.AttachDispatch(wbk.GetSheets());
lpDisp=wbk.GetActiveSheet();
wht.AttachDispatch(lpDisp);
range.AttachDispatch(wht.GetCells());
// ExcelApp.SetVisible(TRUE);
ExcelApp.SetUserControl(TRUE);
int row=2;
for(int i=0;i<TotalNum;i++)
{
for(int col=1;col<9;col++)
{
str=m_EventList.GetItemText(i,col-1);
range.SetItem(_variant_t((long)row),_variant_t((long)col),_variant_t(str));
}
row++;
}
CString strXLSPath;
strXLSPath=WorkDirectory+"\\log\\EventLog.xls";
wbk.SaveCopyAs(_variant_t(strXLSPath));
range.ReleaseDispatch();
wht.ReleaseDispatch();
whts.ReleaseDispatch();
wbk.ReleaseDispatch();
wbks.ReleaseDispatch();
ExcelApp.ReleaseDispatch();
wbks.Close();
ExcelApp.Quit();
range.Active();好象这样就可以,拼写不知道有错没有,你试试吧
没有这个接口:range.Active();
你的写法只是写单元格的内容,并没有增加新行
你介绍的方法我照做试了下,是可以建立一个Excel表格,办公自动化也不失为一种好方法。
但,我已实现的代码有大量部分是用上述方法做的,而且你介绍的方法只演示了创建一个Excel,如何对已有表格做处理(读写、插入行、删除行等等)并未提及。谢谢!
Xls = rngXls.GetRange( COleVariant(_T(“A1“)),COleVariant(_T(“C5“)) );
然后进行操作,删除?
{
CString place;
place.Format("A%d",iIndex);
Range range;
range.AttachDispatch(m_sheet.GetRange(_variant_t(place),_variant_t(place)));
range.AttachDispatch(range.GetEntireRow()); range.Insert(_variant_t((long)1));
}