当前位置:主页>销售管理软件> 列表

操作 ExcelApplication1 的问题?急! 找进销存设计

销售管理软件版1楼: 我程序用了 TExcelApplication、TExcelWorkbook、TExcelWorksheet来操作Excel,对单元格的写数据没有问题,但我要设置一行单元格的格式或者Copy一行就不行了

ExcelApplication1.ActiveSheet.Rows[2].RowHeight := 100; -- 这句根本不能编译?

2楼: RowHeight换成Height 如进销存系统

3楼: to Avalon: ExcelApplication1.ActiveSheet.Rows[2]
这样就提示不能编译的,即ActiveSheet没有Rows属性

4楼: ExcelWorksheet1.Cells.Item[1,2]

5楼: 我先要设置一行字体并合并,然后Copy这一行,在这行下面粘贴 10行,怎样操作?

6楼: (ExcelApplication1.ActiveSheet as ExcelWorksheet).Cells.Item[5,6].RowHeight := 100;

销售管理软件版7楼: (ExcelApplication1.ActiveSheet as ExcelWorksheet).Rows.Item[11,EmptyParam].RowHeight := 100;

8楼: 怎么Copy呢?

9楼: 我先要设置一行字体并合并,然后Copy这一行,在这行下面粘贴 10行,怎样操作?

这个你在VB里录制一个宏然后转换过来即可

10楼: to Avalon: 能QQ联系吗?比较急

我的是 28261363!

11楼: Rows("18:18").Select
Selection.Copy
以上是VBA宏代码,那个Selection在delphi中是什么?

12楼: selecttion就是range 或者item[...]
vba中的代碼一般是寫activesheet,selection等等,但是在delphi中一般不會這麼用.
如有疑問,可以qq聯繫!! 如免费客户管理软件

13楼: To eastweast : 你QQ是多少阿
我是 28261363 验证 dfw

销售管理软件版14楼: Range("F22").Select
ActiveSheet.Pictures.Insert( _
"C:\Documents and Settings\Administrator\My Documents\My Pictures\样品.jpg"). _
Select

以上是插入图片的VBA代码,但在Delphi中怎么访问 Pictures 呢?

15楼: procedure TForm1.Button1Click(Sender: TObject);
begin
ExcelApplication1.Connect;
ExcelApplication1.Workbooks.Open (''C:\111.xls'',
EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,0);


(ExcelApplication1.ActiveSheet as ExcelWorksheet).Cells.Item[1,''A''].Copy;


(ExcelApplication1.ActiveSheet as ExcelWorksheet).Cells.Item[2,''A''].PasteSpecial;
(ExcelApplication1.ActiveSheet as ExcelWorksheet).Cells.Item[3,''A''].PasteSpecial;
(ExcelApplication1.ActiveSheet as ExcelWorksheet).Cells.Item[4,''A''].PasteSpecial;
ExcelApplication1.Save;
ExcelApplication1.Quit;
ExcelApplication1.Disconnect;
end;

16楼: TO Avalon : 谢了,Copy功能测试通过!
再麻烦你一下,怎样插入一个图片?

Range("F22").Select
ActiveSheet.Pictures.Insert( _
"C:\Documents and Settings\Administrator\My Documents\My Pictures\样品.jpg"). _
Select

以上是插入图片的VBA代码,但在Delphi中怎么访问 Pictures 呢?

17楼: 大家帮帮忙我也想知道怎么插入图片.

18楼: 图片插入可以copy 先复制图片到剪贴板 然后用RANG定位要粘贴的位置 然后copy代码如下:
v:= CreateOleObject(''Excel.Application'');
Sheet:= v.Workbooks[1].WorkSheets[1];
Sheet.Range[''A1'',''b1''].Select;
Sheet.Paste;
复制到剪贴板可以用CopyToClipboardBitmap;

19楼: 用CopyToClipboardBitmap 怎样把 D:/1.jpg 复制到剪贴板?怎样的格式?

20楼: 楼主 一次全提出吧 别和挤牙膏一样


I 服了 U 啊 [:D]

procedure TForm1.Button1Click(Sender: TObject);
const
msoFalse = $00000000;
msoCTrue = $00000001;

begin
ExcelApplication1.Connect;
ExcelApplication1.Workbooks.Open (''C:\111.xls'',
EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,0);

(ExcelApplication1.ActiveSheet as ExcelWorksheet).Shapes.AddPicture(
''C:\111.bmp'',
msoFalse,
msoCTrue,
10, // Left
10, // Top
300, // Width
300); // Height


ExcelApplication1.Save;
ExcelApplication1.Quit;
ExcelApplication1.Disconnect;
end;

销售管理软件版21楼: 多谢 Avalon 的无私奉献!
我要完成的功能是这样的,有个报价单
1.有题头,包括本公司地址和客户地址等内容
2.接下来是导商品列表,包括图片(高度定好了)和商品名称、单价等

本来这些有FR已经作好的报表,现在客户要求能导出到Excel(一样格式),小弟我对操作Excel可是重来没有作过,所以不断的有新问题,不过在各位的无私帮助下,基本快完成了!

22楼: 为了感谢大家,我完成后我将贴出我完成的代码,算是帮助其他需要的人! 如进销存设计

23楼: 我现在再写 delphi的Com Addin for Excel


所以这个方面关注的多一些罢了 呵呵

24楼: 希望 Avalon 能早日得到 delphi的Com Addin for Excel 的研究成果啊![:D]

25楼: 帮顶!

http://www.source520.com

站长开发推广同盟 站长朋友的终极驿站
同时拥有海量源码电子经典书籍下载

http://www.source520.com/search/search.asp

"编程.站长"论坛搜索引擎-----为中国站长注入动力!

26楼: 到底通过哪种方式控制excel最好啊

27楼: 贴出整个导出程序,共大家参考!
注: 本程序按模版文件导出,模版文件大家可以自己作一个!

procedure actExport_E_VExecute(Sender: TObject);
const
msoFalse = $00000000; //------ 定义该变量,就可以不用引用Office2000单元 -----------
msoCTrue = $00000001;
var
sFile,si,sf : string;
i,f,iCount : Integer;
begin
inherited;
PostQuery;
ShowMsg(''注意: 导出前请先确认已经关闭 Excel 软件!'',False);
//CloseAllExcelApps;
if qryData.IsEmpty or qryGoods.IsEmpty then
begin
ShowMsg(''没有数据,不能导出!'',False);
Exit;
end;

try
EApp.Connect; //EA.Visible[0] := True; {Show}
except
ShowMsg(''Excel may not be installed!'',False);
Exit;
end;

sFile := Get_xls_MB_FileName(''MB2.xls'');
if not FileExists(sFile) then
begin
ShowMsg(''没有发现模版文件:'' + sFile + '',不能导出!'',False);
Exit;
end;

try
EApp.Workbooks.Open(sFile,null,null,null,null,null,null,null,null,null,null,null,null,0);
except
EApp.Disconnect;//出现异常情况时关闭
EApp.Quit;
ShowMsg(''打开文件: '' + sFile + '' 出错!'',False);
exit;
end;

try
Screen.Cursor := crHourGlass;
EBooks.ConnectTo(EApp.Workbooks[1]); //EWB.ConnectTo(EA.Workbooks.Add(EmptyParam,0));
ESheet.ConnectTo(EBooks.Sheets[1] as _Worksheet);

//ESheet.Shapes.AddPicture(''J:\222.jpg'',msoFalse,msoCTrue,10,10,300,300);

ESheet.Cells.Item[1,9] := qryData.FieldByName(''QHNO'').AsString;
ESheet.Cells.Item[2,9] := DateToStr(qryData.FieldByName(''INPUTDATE'').AsDateTime);

ESheet.Range[''A8'',''D11''].Value := qryData.FieldByName(''ENGNAME'').AsString + #10 + //不能加#13
qryData.FieldByName(''CAddr'').AsString + #10 +
qryData.FieldByName(''EADDR1'').AsString + #10 +
qryData.FieldByName(''EADDR2'').AsString ;

ESheet.Range[''E8'',''I11''].Value := qryData.FieldByName(''PAYCOND'').AsString ;
ESheet.Range[''G12'',''I12''].Value := DateToStr(qryData.FieldByName(''INVALIDDATE'').AsDateTime);

ESheet.Range[''C13'',''D13''].Value := qryData.FieldByName(''FORMPORTNAME'').AsString;
ESheet.Range[''G13'',''I13''].Value := qryData.FieldByName(''CLOSEDAY'').AsString + '' Days'';

ESheet.Range[''C14'',''D14''].Value := qryData.FieldByName(''TOPORTNAME'').AsString;

qryGoods.First;
i := 18;

while not qryGoods.Eof do
begin
si := IntToStr(i);
ESheet.Range[''A''+ si ,''A'' + si].Value := qryGoods.FieldByName(''GOODSNO'').AsString;

//ESheet.Range[''B''+ si ,''C'' + si].Select;
//ESheet.Range[''B''+ si ,''C'' + si].RowHeight := 100;

ESheet.Range[''B''+ si ,''C'' + si].MergeCells := True;
ESheet.Range[''B''+ si ,''C'' + si].WrapText := True;
//------ 以下设置格子的高度,也可以算出最高的,然后一次性付值 ----------------
ESheet.Range[''B''+ si ,''C'' + si].RowHeight := 15 * GetHeight_xls(qryGoods.FieldByName(''QGOODSNAME'').AsString); //--- 一个字6个像素 ----------}
ESheet.Range[''B''+ si ,''C'' + si].Value := qryGoods.FieldByName(''QGOODSNAME'').AsString;{ + #10 + '' aaa'' ;}

ESheet.Range[''D''+ si ,''E'' + si].MergeCells := True;
ESheet.Range[''D''+ si ,''E'' + si].WrapText := True;


ESheet.Range[''D''+ si ,''E'' + si].Value := qryGoods.FieldByName(''PGPNAME'').AsString;

ESheet.Range[''F''+ si ,''F'' + si].Value := FloatToStr(qryGoods.FieldByName(''MIN_QTY'').AsFloat);
ESheet.Range[''G''+ si ,''G'' + si].Value := FloatToStr(qryGoods.FieldByName(''OUT_V'').AsFloat);
//ESheet.Range[''H''+ si ,''H'' + si].Value := FloatToStr(qryGoods.FieldByName(''V_Goods'').AsFloat);
ESheet.Range[''H''+ si ,''H'' + si].Value := FloatToStr(qryGoods.FieldByName(''ILENGTH'').AsFloat) + ''x'' +
FloatToStr(qryGoods.FieldByName(''WIDTH'').AsFloat) + ''x'' +
FloatToStr(qryGoods.FieldByName(''HEIGHT'').AsFloat) ;
ESheet.Range[''I''+ si ,''I'' + si].Value := FloatToStr(qryGoods.FieldByName(''PAY_PRICE'').AsFloat);
i := i + 1;
qryGoods.Next;
end;


sFile := Get_xls_Cust_FileName(qryData.FieldByName(''SNO'').AsString);// GetCurrentDir + ''\Test'' + FormatDateTime(''hhnnss'',now) + ''.xls'';
ESheet.SaveAs(sFile);
finally
ESheet.Disconnect;
EBooks.Close;
EBooks.Disconnect;

EApp.Disconnect; //EA.Quit; //EA := unassigned; //EA := null;

//CloseAllExcelApps;
Screen.Cursor := crDefault;
ShowMsg(''成功导出报价文件到:'' + sFile + '' !'',False);
end;
end;

销售管理软件版28楼: 在单元格中插入图片怎么插?
楼上提供的v:= CreateOleObject(''Excel.Application'');
Sheet:= v.Workbooks[1].WorkSheets[1];
Sheet.Range[''A1'',''b1''].Select;
Sheet.Paste;
好象不正确,sheet.Paste()函数有参数的.

29楼: 帮顶!

╭=========================================╮

80G海量源代码,控件,书籍全免费狂下不停!

http://www.source520.com

╰=========================================╯

30楼: 接受答案了.