当前位置导航:炫浪网>>网络学院>>编程开发>>C++教程>>C++ Builder教程

C++Builder 6中开发 Office 程序心得(二)

(四) 单元格的操作
 
  单元格的操作实际上就是对范围(Range)的操作。一般的代码段如下:
 
 RangePtr r;
r=EWS4->get_Range(V("a1"), V("a1"));
r->set_Value(V("Species No"));


  所以,对单元格内容的操作实际就是先获得一个要操作的范围(Range),然后再set_Value的过程。
 
  和数据库连接并不很困难。将数据库中的数据写到Excel Worksheet中也不是很难,无非是遍历数据集,然后将对应字段的内容写到相应的单元格里去而已,所以这里我就不详细论述了。公式的输入也是如此。
 
  实际操作的效果如下图:

C++Builder 6中开发 Office 程序心得(二)

  这里需要说明两个地方。第一是字体和栏目宽度的调整。具体的代码如下:

 r=EWS4->get_Range(V(CellRef), V(CellRef2));
r->Font->set_Name(V("Arial"));
r->get_Columns()->AutoFit();
r->set_WrapText(V(true));

  其操作流程也是先选择一个范围,然后设置字体名称、栏目宽度、自动换行等。
 
  第二是图形的显示。这需要多一些操作才可以:
 
 void __fastcall TMainForm::FillDataBtnClick(TObject *Sender)
{
unsigned int DataHandle;
HPALETTE APalette;
unsigned short MyFormat;
Graphics::TBitmap *Bitmap = new Graphics::TBitmap();
  ... ...
while (!Table1->Eof)
{
... ...
CellRef="e"+IntToStr(Count);
r=EWS4->get_Range(V(CellRef), V(CellRef));
Bitmap->Assign(Table1Graphic);
Bitmap->SaveToClipboardFormat(MyFormat,DataHandle,APalette);
Clipboard()->SetAsHandle(MyFormat,DataHandle);
EWS4->Paste(V(LPDISPATCH(r)), TNP, 0);
  ... ...
}
  ... ...
  delete Bitmap;
return;
}


  这里采用了Bitmap->Assign,将图形字段的内容作为Bitmap的内容,然后将Bitmap以剪贴板的格式保存到DataHandle中去,并返回保存的格式到MyFormat.然后用Clipbboard的SetAsHandle方法,将DataHandle中的内容以MyFormat格式“拷贝”到剪贴板上。最后,再用Worksheet的Paste方法将剪贴板上的图片拷贝到r指定的地方。
 

共2页 首页 上一页 1 2 下一页 尾页 跳转到
相关内容
赞助商链接