用vc控制excel表,把结构相同的表的记录都追加到一张表中,现在copy出现问题!!请教大家!
我想把两个excel文件合并成一个文件
每个文件中表的结构和表的个数都一样
每个表分别合并记录就行勒
下面是我的程序
我用copy方法来合并记录
这个方法需要指定一个目标range
比如从第n行到n+m行,该如何设定?
{ _Application ExcelApp;
Workbooks wbsMyBooks;
_Workbook wb1,wb2;
Worksheets wss1,wss2;
_Worksheet ws1,ws2;
//创建Excel 2000服务器(启动Excel)
if (!ExcelApp.CreateDispatch("Excel.Application",NULL))
{
AfxMessageBox("创建Excel服务失败!");
exit(1);
}
//1,打开两张表(workbook)wb1,wb2
wbsMyBooks.AttachDispatch(ExcelApp.GetWorkbooks(),true);
wb1.AttachDispatch(wbsMyBooks.Add(_variant_t("c:\\test1.xls")));
wb2.AttachDispatch(wbsMyBooks.Add(_variant_t("c:\\test2.xls")));
//2, 得到workbook中sheet的数目 count
long sheetcount1,sheetcount2;
//先得到各自的sheets
wss1.AttachDispatch(wb1.GetWorksheets(),true);
wss2.AttachDispatch(wb2.GetWorksheets(),true);
//得到各自的sheet数目
sheetcount1 = wss1.GetCount();
sheetcount2 = wss2.GetCount();
//判断表数目是否相等
if(sheetcount1 != sheetcount2)
{
AfxMessageBox("工作簿中的表的数目不一致,无法追加记录");
return;
}
//3, 遍历每张表sheet
for(int i=1; i <= sheetcount1; i++)
{
//得到两张表
ws1.AttachDispatch(wss1.GetItem(_variant_t((long)i)));
ws2.AttachDispatch(wss2.GetItem(_variant_t((long)i)));
//4, 得到wb1,wb2中的表的行数
long itemcount1,itemcount2;
Range rg1,rg2,rowsrg1,rowsrg2,dstrg;
rg1.AttachDispatch(ws1.GetUsedRange());
rg2.AttachDispatch(ws2.GetUsedRange());
rowsrg1.AttachDispatch(rg1.GetRows());
rowsrg2.AttachDispatch(rg2.GetRows());
itemcount1 = rowsrg1.GetCount();
itemcount2 = rowsrg2.GetCount();
//追加记录!这里遇到问题
//copy需要指定一个矩形区域
请问:该如何指定这个dstrg?
//5,追加记录
rg2.Copy(_variant_t(dstrg));
}
}