XLSReadWriteII是一个多功能的文档处理组件,能在Delphi和.NET下访问Excel文件,你能使用它进行文档的操纵,可最大程度提升你的工作效率。
虽然现在XLSReadWriteII已经升级到6了,但是还是有很大一部分用户还在使用4,而在使用4的过程中,有的用户会遇到当需要在多张纸上添加相同图片的时候,可是图片仅显示在第一张纸上,然后下一张纸不显示。这时候怎么解决这个问题呢?所有的问题都在本教程中解决。
解决方法有两种:
您可以为每张图片提供不同的名称。添加序列号或者将文件编号添加到文件名中都可以
-
注意: 这里更改的不是PictureName,而是图片的文件名。当然,这会增加图片文件的数量,但是这些重命名的文件通常位于临时目录中,或者可以通过编程方式进行控制。
如果以上方法不适用,那么可以使用下一个方法,使用以下代码来解决:
TXLSReadWriteII4* xls = new TXLSReadWriteII4(NULL); xls->Filename = fn; xls->Version = xvExcel97; if(!xls->Sheets->Count) xls->Sheets->Add(); TSheet* xlSht = xls->Sheets->Items[0]; TMSOPicture* msoPict = xls->MSOPictures->Add(); int picID = xls->MSOPictures->Count; msoPict->LoadFromFile(ExtractFilePath(Application->ExeName) + "logo.jpg"); TDrwPicture* drwPict = xlSht->DrawingObjects->Pictures->Add(); drwPict->PictureId = picID; drwPict->Col1 = 1; drwPict->Row1 = 1; drwPict->Col1Offset = 0.08; drwPict->Row1Offset = 0.05; drwPict->Col2 = 1; drwPict->Row2 = 2; drwPict->Col2Offset = 0.92; drwPict->Row2Offset = 0.95; xls->Write();
如果有需要也可以转换成Delphi代码。