我是刚学习delphi的菜鸟,希望各位大虾能帮一下我,我的问题是:ActiveX下f1book的用法,怎样设置单元格的公式?虽然以前已经有人解答过此类问题,可是无奈我太菜还是不懂, 希望热心人给出简单的例子说明其用法,不胜感激!

解决方案 »

  1.   

    其实f1book的基本用法我通过在网上查资料是熟悉了,可是我还是对它的计算公式不会运用
    FormulaRC的格式,怎样在公式中取得单元格的内容?kkkkkkkkkkkkkkkkkkkkk
      

  2.   

    》》转贴程序的目的是将通用的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);
      

  3.   

    用f1book1.read();能不能读取excel文件,为什么我的程序读不了,老提示不能打开文件!!!
    谁有用f1book1.read();打开excel的代码给小弟一看,感激