如何在CB中实现Excel表中Sheet页的拷贝
各位高手帮帮忙。
1我自己建了一个Excel模板(只有一个Sheet页(Sheet1)),导入的数据大于一个Sheet页时,我想建立一个原来Sheet的副本(比如Sheet1(2))。怎么写啊?有它的“copy”命令吗?
2 如何按页脚名称将该页设为Active。(当前活动页)?
3 如何一次获得已存在的所有Sheet页的页脚名称?
谢谢!!
问题点数:0、回复次数:5Top
1 楼HenryGo(孺子牛)回复于 2003-12-03 23:44:09 得分 0
不是很懂
热情upTop
2 楼npuanran(找不着北了)回复于 2003-12-03 23:57:03 得分 0
关注,顶一下。Top
3 楼ccrun(老妖)(www.ccrun.com)回复于 2003-12-04 11:16:56 得分 0
给你写了一段代码。
#include "comobj.hpp"
Variant vExcelApp, vWorkbookSrc, vWorkbookDst, vSheetSrc, vSheetDst;
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
String strXlsFileName = "C:\\123\\123.xls";
// 要copy的工作表名
String strSheetSrcName = "Sheet1";
// 创建Excel对象
vExcelApp = Variant::CreateObject("Excel.Application");
// Excel是否可视
// vExcelApp.OlePropertySet("Visible", true);
// 打开Excel文档
vExcelApp.OlePropertyGet("WorkBooks").OleProcedure("Open", strXlsFileName.c_str());
// 取得当前活动工作表
vWorkbookSrc = vExcelApp.OlePropertyGet("ActiveWorkBook");
// 工作簿中工作表的总数
int nSheetsCount = vWorkbookSrc.OlePropertyGet("Sheets").OlePropertyGet("Count");
ShowMessage("当前工作簿中工作表数:" + String(nSheetsCount));
//
// 选定欲copy的工作表
vWorkbookSrc.OlePropertyGet("Sheets", strSheetSrcName.c_str()).OleProcedure("Select");
vSheetSrc = vWorkbookSrc.OlePropertyGet("ActiveSheet");
// copy工作表
vSheetSrc.OleProcedure("Copy");
// 这时造成一个新的工作簿
vWorkbookDst = vExcelApp.OlePropertyGet("ActiveWorkBook");
vSheetDst = vWorkbookDst.OlePropertyGet("ActiveSheet");
vSheetDst.OleProcedure("Select");
// 把新工作簿的表移回最初的工作簿
vSheetDst.OleProcedure("Move", vSheetSrc);
// 保存工作簿
vWorkbookSrc.OleFunction("Save");
vWorkbookSrc.OleProcedure("Close");
//
vWorkbookSrc = Unassigned;
vWorkbookDst = Unassigned;
vSheetSrc = Unassigned;
vSheetDst = Unassigned;
// 退出,走人咧
vExcelApp.OleProcedure("Quit");
vExcelApp = Unassigned;
ShowMessage("Success!");
}
//---------------------------------------------------------------------------Top
4 楼ccrun(老妖)(www.ccrun.com)回复于 2003-12-04 11:21:02 得分 0
-->如何按页脚名称将该页设为Active。(当前活动页)?
是按照工作表的名称选定这个工作表吧?
String strSheetName = "Sheet1";
vWorkbook.OlePropertyGet("Sheets", strSheetName.c_str()).OleProcedure("Select");
-->如何一次获得已存在的所有Sheet页的页脚名称
int nSheetsCount = vWorkbook1.OlePropertyGet("Sheets").OlePropertyGet("Count");
for(int i=0; i<nSheetsCount; i++)
{
// 遍历每个工作表
vWorkbook.OlePropertyGet("Sheets", i+1).OleProcedure("Select");
strSheetName = vWorkbook.OlePropertyGet("ActiveSheet").OlePropertyGet("Name");
...
}Top
5 楼bullHEcow(牛)回复于 2003-12-07 09:34:28 得分 0
学习Top




