紧急求助一个简单问题!

echonmay 2003-05-14 05:04:47
我做了一个小程序,实现将一个table中的数据存到excel中,可是执行完后,发现excel文件中什么也没有,百思不得其解,望高手指点!我的程序如下,表中确定有值。

int i,j=1;
Variant ex,ExcelBook;

try
{
ex=CreateOleObject("Excel.Application");
}

catch(...)
{
ShowMessage("无法启动Excel!");
return;
}

ex.OlePropertySet("Visible",(Variant)false);
ExcelBook = ex.OlePropertyGet("WorkBooks").OleFunction("Add");
Table1->Active=true;
Table1->First();

for(i=0;i<Table1->FieldCount;i++)
{
(ex.OlePropertyGet("Cells")).OlePropertySet("Item",(Variant)1,(Variant) (i+1),(Variant)(Table1->Fields->Fields[i]->FieldName ));

}

while(!Table1->Eof)
{
j=j+1;
for(i=0;i<Table1->FieldCount;i++)

{
ex.OlePropertyGet("Cells").OlePropertySet("Item",(Variant)j,(Variant) (i+1),(Variant)Table1->Fields->Fields[0]->AsString);
}
Table1->Next();
}
ExcelBook.OleProcedure("Save");
ExcelBook.OleFunction("SaveAs","e:\\table.xls");
ExcelBook.OleProcedure("Close");
ex.OleFunction("Quit");
...全文
28 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
slhuang 2003-05-15
  • 打赏
  • 举报
回复
呵呵。刚好我有这么个问题。看了让我收获不少。呵呵……UP
unstudied 2003-05-15
  • 打赏
  • 举报
回复
如果要操作第二个工作表
设置第二个工作表为活动工作表:
ExcelApp.WorkSheets[2].Activate;

ExcelApp.WorksSheets["Sheet2"].Activate;
ghwhz 2003-05-15
  • 打赏
  • 举报
回复
对不起了,我不知道啊,你可以把这个问题单独提出来问大家,向上面的函数我也是和别人学的,我还是个新手。hehe
echonmay 2003-05-14
  • 打赏
  • 举报
回复
谢谢,检查出来问题了。
那么你知道怎么给一个新建的sheet命名呢?
ghwhz 2003-05-14
  • 打赏
  • 举报
回复
我没来得及细看,不过我有一个调试通过的函数,你对比着去看看吧

int TForm1::txDSToExecl(TDataSet *ds)
{
Variant ex,newxls,sh;
AnsiString sTemp;
try{
ex=CreateOleObject("Excel.Application");//啟動Excel
ex.OlePropertySet("Visible",(Variant)true); //使Excel啟動后可見
newxls=(ex.OlePropertyGet("Workbooks")).OleFunction("Add");//新建一新工作薄
sh=newxls.OlePropertyGet("ActiveSheet");
}catch(...)
{
//txMsgInf("啟動Excel出錯,可能由于Excel沒有正确安裝");
return -1;
}
if(ds->IsEmpty())
{
return 1;
}
ds->First();
sh.OlePropertyGet("Cells").OlePropertyGet("Font").OlePropertySet("Size",11);
for(int i=0;i<ds->FieldCount;i++)
{
sTemp = (Variant)(ds->Fields->Fields[i]->FieldName);
sh.OlePropertyGet("Cells",1,i+1).OlePropertySet("Value",sTemp.c_str());
sh.OlePropertyGet("Cells",1,i+1).OlePropertyGet("Font").OlePropertySet("Bold",(Variant)true);
}

int RecCount=0;;
while(!ds->Eof)
{
for(int i=0;i<ds->FieldCount;i++)
{
sTemp = (Variant)(ds->Fields->Fields[i]->AsString);
sh.OlePropertyGet("Cells",RecCount+2,i+1).OlePropertySet("Value",sTemp.c_str());
}
ds->Next();
RecCount++;
}
return 0;
}

13,873

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧