各位csdn上的热心人,看看小弟的问题,让我爱上delphi!

fengqing7 2005-05-19 06:48:48
我是刚学习delphi的菜鸟,希望各位大虾能帮一下我,我的问题是:ActiveX下f1book的用法,怎样设置单元格的公式?虽然以前已经有人解答过此类问题,可是无奈我太菜还是不懂, 希望热心人给出简单的例子说明其用法,不胜感激!
...全文
174 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
fengqing7 2005-05-23
  • 打赏
  • 举报
回复
用f1book1.read();打开在f1book1上操作保存完成的excel没有问题,但是打开一个已经编辑好的excel就有问题,我的QQ: 11754722 .热心人赐教了
fengqing7 2005-05-23
  • 打赏
  • 举报
回复
用f1book1.read();能不能读取excel文件,为什么我的程序读不了,老提示不能打开文件!!!
谁有用f1book1.read();打开excel的代码给小弟一看,感激。。。
darkliu 2005-05-22
  • 打赏
  • 举报
回复
》》转贴

程序的目的是将通用的DBGrid中的内容显示到F1Book,这样便于数据的导出。输入数据(除非是批量输入)我还是使用DBGrid,但DBGrid不能很容易地实现块复制、打印、导出等功能。

首先创建一Form, 上面拖上 Database1 Query1 DataSource1 DBGrid 三个控件,随便连接上一数据库,我使用的是SQL server,显示成功后,再在画面上放上F1Book1,再加上一个按钮,点击按钮后相应的代码如下:(功能是DBGrid中的内容再显示到F1Book1,代码的书写具有通用性)

AnsiString tmpfd,tmpname;
int i,j,totalnum,totalcol,kk;

totalnum=DBGrid1->DataSource->DataSet->RecordCount; // 记录总数

kk=0;
for(i=0;i<DBGrid1->Columns->Count;i++)
{
if(DBGrid1->Columns->Items[i]->Visible)
kk=kk+1;
}
totalcol=kk; // 表格的列数
if(totalnum>16384)
{
Application->MessageBox("结果集太大,不能超过16384行!","提示",48);
}
if(totalnum==0)
{
F1Book1->MaxCol=1;
F1Book1->MaxRow=1;
return;
}
if(totalcol>0) F1Book1->MaxCol=totalcol;
if(totalnum>0) F1Book1->MaxRow=totalnum;

F1Book1->ClearRange(1,1,F1Book1->MaxRow,F1Book1->MaxCol,1);

for(i=1;i<=totalcol;i++)
{
F1Book1->ColText[i]=Char(i+64);
}

// 输出标题
kk=0;
for(i=0;i<DBGrid1->Columns->Count;i++)
{
if(DBGrid1->Columns->Items[i]->Visible)
{
kk=kk+1;
TColumn *Column=DBGrid1->Columns->Items[i];
TColumnTitle *ColumnTitle =Column->Title;
AnsiString tmpname=ColumnTitle->Caption;
F1Book1->ColText[kk]=tmpname;
}
}


// 以下输出内容
TDataSet *theDS = DBGrid1->DataSource->DataSet;
theDS->DisableControls();
theDS->First();
for (j=0;j<totalnum;j++)
{
kk=0;
for(i=0;i<DBGrid1->Columns->Count;i++)
{
if(DBGrid1->Columns->Items[i]->Visible)
{
kk=kk+1;
tmpfd=DBGrid1->Columns->Items[i]->FieldName;
if(theDS->FieldByName(tmpfd)->DataType==ftInteger)
F1Book1->TextRC[j+1][kk]=IntToStr(theDS->FieldByName(tmpfd)->AsInteger);
else
F1Book1->TextRC[j+1][kk]=theDS->FieldByName(tmpfd)->AsString;
}
}
theDS->Next();
}
theDS->EnableControls();
theDS->First();

//设置效果
Screen->Cursor=crDefault;
F1Book1->ColHidden[1]=false;
F1Book1->RowHidden[1]=false;
F1Book1->SetFont('宋体',9,false,false,false,false,RGB(0,0,0),false,false);
F1Book1->SetColWidthAuto(1,1,F1Book1->MaxRow,F1Book1->MaxCol,true);
//最大宽度不超过6000
for(i=0;i<F1Book1->MaxCol;i++) //file://将字段名写到工作薄的第一行
{
if(F1Book1->ColWidth[i+1]>6000||F1Book1->ColWidth[i+1]<0)
F1Book1->ColWidth[i+1]=6000;
}
F1Book1->HdrHeight=400;
F1Book1->SetRowHeight(1,F1Book1->MaxRow,300,true);
hellolongbin 2005-05-20
  • 打赏
  • 举报
回复
有一点是要明确的,就是他的单元格序号不是从0开始,而是从1开始的

fengqing7 2005-05-20
  • 打赏
  • 举报
回复
其实f1book的基本用法我通过在网上查资料是熟悉了,可是我还是对它的计算公式不会运用
FormulaRC的格式,怎样在公式中取得单元格的内容?kkkkkkkkkkkkkkkkkkkkk
qrlvls 2005-05-20
  • 打赏
  • 举报
回复
flbook是什么东东
jkx01whg 2005-05-20
  • 打赏
  • 举报
回复
多找几本书来对比一下各自的说法,相信你会很明白

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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