hosseinmehr
پنج شنبه 14 بهمن 1389, 21:37 عصر
من برای ایجاد یک فایل اکسل و قرار دادن اطلاعات درون آن از روش زیر استفاده کرده ام:
procedure TFSabtTest.btnCorrectTestClick(Sender: TObject);
var
oXL, oWB, oSheet, oRng, VArray,oData : Variant;
i , j : Integer;
numRow,numCol : Integer;
range : string;
begin
// Start Excel and get Application Object
oXL := CreateOleObject('Excel.Application');
oXL.Visible := True;
// Get a new workbook
oWB := oXL.Workbooks.Add;
oSheet := oWB.ActiveSheet;
numRow := 10;
numCol := 20;
oData := VarArrayCreate([1,numRow,1,numCol],varVariant);
j := 1;
for i := 1 to numRow do
begin
oData[i+1, j] := i;
end;
oSheet.range[RefToCell(1, 1), RefToCell(numRow, numCol)] := oData;
oRng := oSheet.Range[RefToCell(1, 1)+':'+ RefToCell(1, numCol)];
oRng.orientation := 90;
oRng.EntireColumn.AutoFit;
oRng.Font.Bold := True;
oRng.VerticalAlignment := xlVAlignCenter;
oRng := oSheet.Range[RefToCell(numRow+2,3),RefToCell(numRow*2 + 1 ,numCol)];
oRng.formula :='=IF(C2<>"";IF(C2=$B2;3;-1);0)';
مشکلی که من دارنم اینه که در خط آخر که از فرمول استفاده کردم خطا بهم میده.
البته وقتی از فرمول ساده استفاده میکنم که if نداره خطا نمیگیره ولی با اضافه کردن if ازم خطا میگیره.
تابعRefToCell را هم از این تاپیک گرفتم.
http://barnamenevis.org/showthread.php?177613
procedure TFSabtTest.btnCorrectTestClick(Sender: TObject);
var
oXL, oWB, oSheet, oRng, VArray,oData : Variant;
i , j : Integer;
numRow,numCol : Integer;
range : string;
begin
// Start Excel and get Application Object
oXL := CreateOleObject('Excel.Application');
oXL.Visible := True;
// Get a new workbook
oWB := oXL.Workbooks.Add;
oSheet := oWB.ActiveSheet;
numRow := 10;
numCol := 20;
oData := VarArrayCreate([1,numRow,1,numCol],varVariant);
j := 1;
for i := 1 to numRow do
begin
oData[i+1, j] := i;
end;
oSheet.range[RefToCell(1, 1), RefToCell(numRow, numCol)] := oData;
oRng := oSheet.Range[RefToCell(1, 1)+':'+ RefToCell(1, numCol)];
oRng.orientation := 90;
oRng.EntireColumn.AutoFit;
oRng.Font.Bold := True;
oRng.VerticalAlignment := xlVAlignCenter;
oRng := oSheet.Range[RefToCell(numRow+2,3),RefToCell(numRow*2 + 1 ,numCol)];
oRng.formula :='=IF(C2<>"";IF(C2=$B2;3;-1);0)';
مشکلی که من دارنم اینه که در خط آخر که از فرمول استفاده کردم خطا بهم میده.
البته وقتی از فرمول ساده استفاده میکنم که if نداره خطا نمیگیره ولی با اضافه کردن if ازم خطا میگیره.
تابعRefToCell را هم از این تاپیک گرفتم.
http://barnamenevis.org/showthread.php?177613