<b>C++ Builder 6中开辟Office程序心得(二)</b>[VC/C++编程]
本文“<b>C++ Builder 6中开辟Office程序心得(二)</b>[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
(四) 单元格的操作
单元格的操作实际上就是对范围(Range)的操作.普通的代码段以下:
RangePtr r;
r=EWS4->get_Range(V("a1"), V("a1"));
r->set_Value(V("Species No"));
所以,对单元格内容的操作实际就是先得到一个要操作的范围(Range),然后再set_Value的历程.
和数据库衔接并不很艰难.将数据库中的数据写到Excel Worksheet中也不是很难,无非是遍历数据集,然后将对应字段的内容写到呼应的单元格里去罢了,所以这里我就不具体阐述了.公式的输入也是如此.
实际操作的效果以下图:
这里需求阐明两个地方.第一是字体和栏目宽度的调整.具体的代码以下:
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指定的地方.
注意,r只是指明了被拷贝内容左上角的位置.关于图片来说,它不会、也不该该自动适应到一个单元格中.所以,在上述例子中,E列的宽度无法自动适应图片的宽度,需求别的疗养.
以上是“<b>C++ Builder 6中开辟Office程序心得(二)</b>[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |