о я в печали...
проблема такого плана : в нашем оффисе стоят бесплатные OpenOffice.. очень печальные офисы..
а программа использует Excel...
Хочу Обуздать OOCalc...
тема как
function SaveAsXlsFile(stringGrid: TstringGrid; FileName: string): Boolean;
const
xlWBATWorksheet = -4167;
xlContinuous=1;
xlDouble = -4119;
xlThin=2;
xlThick = -4138;
xlMedium = -4138;
xlTop = -4160;
xlCenter = -4108;
xlLeft = -4131;
xlRight = -4152;
var
Row, Col: Integer;
Grid : TStringGrid;
GridPrevFile: string;
XLApp, Sheet: OLEVariant;
ServiceManager,vDesktop,Excel,Sheets,Sheet1,Range : Variant;
i,j:integer;
OO, App, WBook, VArray, WSheet: variant;
iRow, iCol : Integer;
begin
Result := False;
try
XlApp := CreateOleObject('Excel.Application');
except
SHOWMESSAGE('Я весь в Печали у вас нет MS Office но есть вариация с OpenOffice + Calc должен спасити..');
try
ServiceManager := CreateOleObject('com.sun.star.ServiceManager');
except
SHOWMESSAGE('ой... печаль сия функция вам не доступна...')
end;
end;
if VarIsEmpty(XLApp) then
XLApp := CreateOleObject('Excel.Application');
try
XLApp.Visible := true;
XLApp.Workbooks.Add(xlWBatWorkSheet);
Sheet := XLApp.Workbooks[1].WorkSheets[1];
Sheet.Name := DateToStr(Now);
for col := 0 to stringGrid.ColCount - 1 do
for row := 0 to stringGrid.RowCount - 1 do
{XLApp.ActiveSheet.PageSetup.LeftMargin:= XLApp.Application.InchesToPoints(0.44);
XLApp.ActiveSheet.PageSetup.RightMargin:= XLApp.Application.InchesToPoints(0.44);
XLApp.ActiveSheet.PageSetup.TopMargin:= XLApp.Application.InchesToPoints(0.44);
XLApp.ActiveSheet.PageSetup.BottomMargin:= XLApp.Application.InchesToPoints(0.44);}
Sheet.Cells[row + 1, col + 1] := stringGrid.Cells[col, row];
Sheet.Range['C1:C60'].Select;
Sheet.Range['C1:C60'].Cut;
Sheet.Range['K1:K60'].Select;
XLApp.ActiveSheet.Paste;
Sheet.Range['G1:G60'].Select;
Sheet.Range['G1:G60'].Cut;
Sheet.Range['C1:C60'].Select;
XLApp.ActiveSheet.Paste;
Sheet.Range['C5:C13'].Select;
Sheet.Range['C5:C13'].Cut;
Sheet.Range['G5:G13'].Select;
XLApp.ActiveSheet.Paste;
Sheet.Range['D1:D60'].Select;
Sheet.Range['D1:D60'].Cut;
Sheet.Range['N1:N60'].Select;
XLApp.ActiveSheet.Paste;
Sheet.Range['N1:N60'].Clear;
Sheet.Range['E1:G60'].Select;
Sheet.Range['E1:G60'].Cut;
Sheet.Range['D1'].Select;
XLApp.ActiveSheet.Paste;
Sheet.Range['I16:I16'].Select;
Sheet.Range['I16:I16'].Cut;
Sheet.Range['F16:F16'].Select;
XLApp.ActiveSheet.Paste;
Sheet.Range['B5:F13'].Select;
XLApp.Columns.AutoFit;
XLapp.Selection.Borders.LineStyle:=xlContinuous;
XLApp.Selection.Borders.Weight:=xlThin;
Sheet.Range['B16:G54'].Select;
XLApp.Columns.AutoFit;
XLapp.Selection.Borders.LineStyle:=xlContinuous;
XLApp.Selection.Borders.Weight:=xlThin;
Sheet.Range['B5:C5'].Select;
Sheet.Range['B5:C5'].Merge;
XLApp.Columns.AutoFit;
Sheet.Range['B15:C15'].Select;
Sheet.Range['B15:C15'].Merge;
Sheet.Range['B5:F5'].Select;
XLapp.Selection.Borders.LineStyle:=xlContinuous;
XLApp.Selection.Borders.Weight:=xlThick;
Sheet.Range['B13:F13'].Select;
XLapp.Selection.Borders.LineStyle:=xlContinuous;
XLApp.Selection.Borders.Weight:=xlThick;
Sheet.Range['B16:G16'].Select;
XLapp.Selection.Borders.LineStyle:=xlContinuous;
XLApp.Selection.Borders.Weight:=xlThick;
Sheet.Range['B21:G21'].Select;
XLapp.Selection.Borders.LineStyle:=xlContinuous;
XLApp.Selection.Borders.Weight:=xlThick;
Sheet.Range['B37:G37'].Select;
XLapp.Selection.Borders.LineStyle:=xlContinuous;
XLApp.Selection.Borders.Weight:=xlThick;
Sheet.Range['B52:G52'].Select;
XLapp.Selection.Borders.LineStyle:=xlContinuous;
XLApp.Selection.Borders.Weight:=xlThick;
Sheet.Range['B53:G53'].Select;
XLapp.Selection.Borders.LineStyle:=xlContinuous;
XLApp.Selection.Borders.Weight:=xlThick;
Sheet.Range['B54:G54'].Select;
XLapp.Selection.Borders.LineStyle:=xlContinuous;
XLApp.Selection.Borders.Weight:=xlThick;
Sheet.Range['D1:D60'].Select;
XLApp.Selection.HorizontalAlignment:=xlRight;
Sheet.Range['B5:B5'].Select;
XLApp.Columns.AutoFit;
//
// XLApp.Selection.Interior;
// XLApp.Selection.Interior.ColorIndex:=48;
try
XLApp.Workbooks[1].SaveAs(FileName);
Result := True;
except
// Error ?
end;
finally
if not VarIsEmpty(XLApp) then
begin
XLApp.DisplayAlerts := False;
// XLApp.Quit;
XLAPP := Unassigned;
Sheet := Unassigned;
end;
end;
точнее я даже начал проблему обуздывать но что-то отпять жеж сталкнулся я спроблемой..
проблема выглядит так...
if VarIsEmpty(ServiceManager) then
try
OO := CreateOleObject('com.sun.star.ServiceManager');
App := OO.CreateInstance('com.sun.star.frame.Desktop');
WBook := App.LoadComponentFromURL('private:factory/scalc','_Blank',0, VarArrayCreate([0, -1], varVariant));
wSheet:=wBook.GetSheets;
Sheets1:=
for iCol := 0 to stringGrid.ColCount - 1 do begin
for iRow := 0 to stringGrid.RowCount - 1 do begin
WSheet.Cells[iRow + 1, iCol + 1] := stringGrid.Cells[iCol, iRow]
End;
End;
// WSheet.InsertCells[row + 1, col + 1] := stringGrid.Cells[col, row];
except
end;
end;
делаю для того чтобы заработать деняк.. ибо в конторе конкурс на иновацию самае оно.... ценник нормальный...